我的共享 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
提前谢谢您。
更新:计数仍在增加
这是我遇到同样问题的经验以及解决方法。
我在 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
从那以后我就再没有遇到过问题。
我在 Namecheap 上也遇到了问题。奇怪的是总是他们……
支持人员告诉我这与他们的 CageFS 有关,并且只能通过支持人员修复/重置。
编辑: 支持给了我一个新的 cronjob 来运行
kill -9 $(ps faux | grep node | grep -v grep | awk {'print $2'})
对我来说,这个比 Gerardo 的命令效果更好。
您可以通过运行以下命令来停止未使用的进程:
/usr/bin/pkill -9 lsnode
我遇到了与您描述的完全相同的问题。我的 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-作业/
我刚刚花了 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!
节点脚本中的这个错误对我的服务器造成了严重破坏。我希望这可以帮助您找到错误并避免一些混乱。干杯。