【问题标题】:Node.js server is not stopping on forever stop 0Node.js 服务器不会在永远停止 0 上停止
【发布时间】:2023-04-09 19:56:01
【问题描述】:

我的情况是这样的:

我在 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,它就像一个魅力!

标签: javascript node.js


【解决方案1】:

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

按照这个答案杀死所有节点进程:https://stackoverflow.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 有什么不同吗?
    • 您好,我认为这不能回答我的问题。
    猜你喜欢
    • 2017-08-11
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多