Node.js 服务器不会在永远停止 0 上停止

Posted

技术标签:

【中文标题】Node.js 服务器不会在永远停止 0 上停止【英文标题】:Node.js server is not stopping on forever stop 0 【发布时间】:2020-07-04 10:37:31 【问题描述】:

我的情况是这样的:

我在 domain.com:54321 运行一个 node.js 服务器

我用来启动服务器的命令是:

forever start -l forever.log -a -o out.log -e err.log index.js

但是,在某些情况下,我们的代码会遇到要求很高的功能,从而导致脚本运行缓慢或无响应。我们正在努力优化它。

在这种情况下,我会停止服务器,并在需要时启动一个新服务器,比如domain.com:67890

forever stop 0

但是,如果我想以此重新启动最近停止的 node.js 服务器 domain.com:54321(或重新启动它而不是停止它),我希望这些进程会停止并再次以新鲜和快速的方式运行。

如果我再次启动它,或者重新启动它,它会继续占用大量资源。我发现我需要将其放置几个小时才能重新开始。

我的问题是,是否有任何其他命令可以确保停止该服务器的每个实例、资源,以便我可以立即再次开始使用它?

谢谢

【问题讨论】:

停止服务后尝试运行'forever list'和'sudo forever list',列表需要为空 @AlfredoLanzetta 我这样做了,他们确实被阻止了。 尝试运行forever.stopAll && forever.cleanUp。我还建议您在项目中使用 PM2 而不是永远使用 PM2。 @AlfredoLanzetta is forever.stopAll 停止所有正在运行的 node.js 服务器? (我在没有先测试的情况下问这个问题,因为我将在生产环境中运行它) 使用pm2,它就像一个魅力! 【参考方案1】:

如果你想要的话,可能会强行杀死所有节点进程。

按照这个答案杀死所有节点进程:https://***.com/a/14790921/5055850

【讨论】:

【参考方案2】:

您可以通过四种不同的方式使用永久运行的 id 停止永久守护程序:

索引 身份证 uid pid

我可以看到使用 pid 停止永远运行的守护进程的答案之一,我可以添加其他方法。

列出正在运行的 Forever 实例:

$ forever list

信息:永远运行的进程

|data: | index | uid | command          | script      |forever pid|id   | logfile                |uptime        |
|------|-------|-----|------------------|-------------|-----------|-----|------------------------|--------------|
|data: | [0]   |f4Kt |/usr/bin/nodejs   | src/index.js|2131       | 2146|/root/.forever/f4Kt.log | 0:0:0:11.485 |

$ forever stop 0索引

$ forever stop 2146id

$ forever stop --uid f4Ktuid

$ forever stop --pidFile 2131 pid

【讨论】:

您好,我认为这不能回答我的问题。【参考方案3】:

运行forever list,然后运行forever stop **id**

这是一个示例输出

$ forever list
info:    Forever processes running
data:        uid  command                                                  script forever pid   id logfile                          uptime        
data:    [0] 9Xzw ng serve --host 0.0.0.0 --port 300         1111   2312    /home/ec2-user/.forever/9Xzw.log 1:3:20:50.412 
data:    [1] wOj1 npm run-script app-start-dev                                    29500   24978    /home/ec2-user/.forever/wOj1.log 0:0:5:3.433

检查您的进程 ID 并终止

forever stop 0forever stop 1forever stop 2

这里是进程的0、1、2索引,data:[0]data:[1]

【讨论】:

您好,我认为这不能回答我的问题。【参考方案4】:

要确保停止该进程,您可以使用pid option:

forever start -l forever.log -a -o out.log -e err.log --pidFile ~/app_pid index.js

forever stop --pidFile ~/app_pid

【讨论】:

嘿维克多,这和forever stop 0 有什么不同吗? 您好,我认为这不能回答我的问题。

以上是关于Node.js 服务器不会在永远停止 0 上停止的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 脚本正在运行,但它不会停止!

如何在 Ubuntu 上停止 Node.js 并在不停止的情况下注销 [重复]

为啥 catch 块不会触发并且应用程序停止在 node.js 中工作

Node.js catch 语句返回不会停止执行

为啥这个while循环在Python中永远不会停止

当服务器关闭/崩溃时,Node JS 会自动重启所有永远的 JS 进程