最近從數倉跑定時任務拉取數據時遇到一個問題,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
本文做者:
黑馬大前端 崔天澤