cPanel 托管的 Node.js 应用程序的进程数很高,并且还在增加

问题描述 投票:0回答:5

我的共享 Web 主机上运行着一个 Node.js 应用程序。 cPanel 显示 67/100 个进程,以及 7 个入口进程。

问题是,该网站目前除了让用户看到它之外没有做任何事情。

一周前我第一次部署应用程序时的进程数只有 11/100。但它一直在逐渐上升,没有明显的原因..

我想知道我的代码是否有任何问题导致这个问题。这相当简单,但可能有一些我没有看到的东西。

我的整个项目托管在 github 上https://github.com/ravindukrs/HackX-Jr-Web

====================

我尝试了什么

我从 cPanel 停止了该应用程序。但进程数量并没有减少。不过它稍微降低了 CPU 使用率。

注意

即使应用程序正在运行,CPU 使用率仍保持 0/100。

我不是一个优秀的开发人员,所以代码可能没有优化。但只是想知道我是否正在创建任何不会结束的进程..

该网站目前托管在 https://hackxjr.lk

提前谢谢您。

cpanel processes

更新:计数仍在增加

node.js bootstrap-4 cpanel
5个回答
2
投票

这是我遇到同样问题的经验以及解决方法。

我在 Namecheap 主机上设置了一个简单的 NodeJs 应用程序,大约一天后我的整个域不可用。我检查了 CPANEL,发现有 200/200 个进程正在运行。所以我联系了支持人员,他们这样说:

正如我所检查的,有很多卡住的 NodeJS 进程,我会采取必要的行动,为您设置一个 cron 作业,自动删除卡住的进程,这样您就不会再遇到这样的问题了。请给我 7-10 分钟。

这是他们设置的 cron 作业:

ps faux | grep lsnode | grep -v 'grep' > $HOME/tmp_data; IFS=$'\n'; day=$(date +%d); for i in $(cat $HOME/tmp_data); do for b in $i; do echo $i | awk -F[^0-9]* '{print $2" "$9}' | awk -v day1=$(date +%d) '{if($2+2<day1)print$1}' | xargs kill -9 && echo "NodeJS process killed"; done; done >/dev/null 2>&1

从那以后我就再没有遇到过问题。


2
投票

我在 Namecheap 上也遇到了问题。奇怪的是总是他们……

支持人员告诉我这与他们的 CageFS 有关,并且只能通过支持人员修复/重置。

编辑: 支持给了我一个新的 cronjob 来运行

kill -9 $(ps faux | grep node | grep -v grep | awk {'print $2'})

对我来说,这个比 Gerardo 的命令效果更好。


0
投票

您可以通过运行以下命令来停止未使用的进程:

/usr/bin/pkill -9 lsnode

0
投票

我遇到了与您描述的完全相同的问题。我的 NodeJS 应用程序和 PHP 网站托管提供商也是 Namecheap。奇怪的是他们的名字不断出现在这个帖子上。

Namecheap 支持人员是这么说的:

根据我们的检查,该问题是由 Node.js 应用程序生成的大量卡住进程引起的。我们已将其删除,网站现已上线。如果问题再次出现,我们建议联系 Web 开发人员来优化您的应用程序和/或设置以下 cron 作业来终止进程:

/usr/bin/pkill -9 lsnode >/dev/null 2>&1

如果您使用 cPanel,本文可能会帮助您设置 cron 作业:https://www.namecheap.com/support/knowledgebase/article.aspx/9453/29/how-to-run-scripts-via -cron-作业/


0
投票

我刚刚花了 5 天调试同样的问题。在我的例子中,我正在运行一个 cron phpcurl,它每 60 秒命中一个节点端点,在其中检查一些需要完成的 Web3 事情。如果它们是新的项目来处理一切都很好,因为使用了 res.send() 。但是当没有新项目时,我并没有结束节点过程。 即

if(accounts.length > 0){
...
res.send(JSON.stringify(result));
}
res.send(JSON.stringify("done")); // you have to make sure to end it!

节点脚本中的这个错误对我的服务器造成了严重破坏。我希望这可以帮助您找到错误并避免一些混乱。干杯。

© www.soinside.com 2019 - 2024. All rights reserved.