最近从数仓跑定时任务拉取数据时遇到一个问题,pm2以cluster模式运行,高并发访问Hive数据表会直接被拒绝链接。前端
那么怎么解决这个问题呢?有两种方案:bash
一种是再起一个单进程独立执行定时任务,并发
另外一种是cluster模式仅执行一次定时任务。ide
在PM2的文档上有这么一段话,这不刚好能解决咱们的问题吗?高并发
并且特别举例说明了定时任务的应用场景。ui
The NODE_APP_INSTANCE
environment variable is used to make a difference between cluster.spa
For example, if you want to run a cronjob only on one cluster, you can check if process.env.NODE_APP_INSTANCE === 0
.code
代码以下,是否是很简单呢?cdn
if (process.env.NODE_APP_INSTANCE === '0') {
// 定时任务
}复制代码
本文参考:blog
PM2文档 https://pm2.io/doc/en/runtime/guide/load-balancing/#cluster-environment-variable
本文做者:
黑马大前端 崔天泽