感恩节快乐,PM2小窍门致NodeJS开发者!

395


最近从数仓跑定时任务拉取数据时遇到一个问题,pm2以cluster模式运行,高并发访问Hive数据表会直接被拒绝连接。


那么怎么解决这个问题呢?有两种方案:

一种是再起一个单进程独立执行定时任务,

另一种是cluster模式仅执行一次定时任务。


在PM2的文档上有这么一段话,这不恰好能解决我们的问题吗?

而且特别举例说明了定时任务的应用场景。

Cluster environment variablelink

The NODE_APP_INSTANCE environment variable is used to make a difference between cluster.

For example, if you want to run a cronjob only on one cluster, you can check if process.env.NODE_APP_INSTANCE === 0.

代码如下,是不是很简单呢?

if (process.env.NODE_APP_INSTANCE === '0') { 
    // 定时任务
}


本文参考:

PM2文档 https://pm2.io/doc/en/runtime/guide/load-balancing/#cluster-environment-variable

本文作者:

黑马大前端 崔天泽