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 2146
id
$ forever stop --uid f4Kt
uid
$ 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 0
或 forever stop 1
或 forever 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 上停止的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ubuntu 上停止 Node.js 并在不停止的情况下注销 [重复]