NodeJS 带有PM2的节点服务器关闭,SIGTERM超时:1600

cnh2zyt3  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(139)

我正在为一个网站运行一个带有PHP laravel后端的Angular SSR应用程序。我设置了一个节点服务器,并使用PM2管理它,使用环境配置生成它,如下所示:

module.exports = {
  apps : [{
    name: 'FFBLive',
    script: 'local.js',
     // instances: "max",
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    args: 'one two',
    instances: 1,
    autorestart: true,
    watch: false, //was true before but tried turning it off to see if it helps
    watch_delay: 1000,
    ignore_watch : ["system202005","system202005/*"],
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  }],

应用程序生成得很好,正常运行了一段时间,然后过了一段时间,我在网站上获得了一个503服务,当我查看服务器时,PM2守护程序已经死了..当我试图查看日志时,我得到了-

pm2 logs
[PM2] Spawning PM2 daemon with pm2_home=/home2/bfo/.pm2
[PM2] PM2 Successfully daemonized
[TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option)
/home2/bfo/.pm2/pm2.log last 15 lines:
PM2        | 2020-05-30T21:23:24: PM2 log: ===============================================================================
PM2        | 2020-05-30T21:23:24: PM2 log: --- New PM2 Daemon started ----------------------------------------------------
PM2        | 2020-05-30T21:23:24: PM2 log: Time                 : Sat May 30 2020 21:23:24 GMT-0400 (Eastern Daylight Time)
PM2        | 2020-05-30T21:23:24: PM2 log: PM2 version          : 3.5.1
PM2        | 2020-05-30T21:23:24: PM2 log: Node.js version      : 10.20.1
PM2        | 2020-05-30T21:23:24: PM2 log: Current arch         : x64
PM2        | 2020-05-30T21:23:24: PM2 log: PM2 home             : /home2/bfo/.pm2
PM2        | 2020-05-30T21:23:24: PM2 log: PM2 PID file         : /home2/bfo/.pm2/pm2.pid
PM2        | 2020-05-30T21:23:24: PM2 log: RPC socket file      : /home2/bfo/.pm2/rpc.sock
PM2        | 2020-05-30T21:23:24: PM2 log: BUS socket file      : /home2/bfo/.pm2/pub.sock
PM2        | 2020-05-30T21:23:24: PM2 log: Application log path : /home2/bfo/.pm2/logs
PM2        | 2020-05-30T21:23:24: PM2 log: Process dump file    : /home2/bfo/.pm2/dump.pm2
PM2        | 2020-05-30T21:23:24: PM2 log: Concurrent actions   : 2
PM2        | 2020-05-30T21:23:24: PM2 log: SIGTERM timeout      : 1600
PM2        | 2020-05-30T21:23:24: PM2 log: ===============================================================================

输出日志文件包含-

Listening on: http://localhost:9700
Listening on: http://localhost:9700
Listening on: http://localhost:9700
Listening on: http://localhost:9700
Listening on: http://localhost:9700
Listening on: http://localhost:9700
{ catSlug: 'all', searchStr: 'Um9odQ' }
Listening on: http://localhost:9700
Listening on: http://localhost:9700

错误日志确实包含一些异常,主要与我的angular应用程序没有找到laravel index.php文件的路由有关-例如。

ERROR { Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'index.php'
Error: Cannot match any routes. URL Segment: 'index.php'
    at ApplyRedirects.module.exports.ApplyRedirects.noMatchError (/home2/bfo/public_html/dist/server.js:165170:16)
    at CatchSubscriber.selector (/home2/bfo/public_html/dist/server.js:165151:29)

在某些情况下,Laravel API上的异常(例如一个供应商依赖项未正确导入控制器)-

Class 'Barryvdh\Snappy\ServiceProvider' not found
Class 'Barryvdh\Snappy\ServiceProvider' not found
ERROR { Error: Uncaught (in promise): Class 'Barryvdh\Snappy\ServiceProvider' not found
    at resolvePromise (/home2/bfo/public_html/dist/server.js:123429:31)

但我的问题是- a)这些异常会导致sigterm并导致PM2守护进程完全停止吗?我不这么认为,但可能是错的。B)我首先认为观察者正在观察太多的文件,因为最初它正在观察PHP REST API文件,这些文件也在一个子文件夹中,但后来我添加了它以忽略观察列表,然后简单地关闭观察,看看是否有帮助。c)我也想知道资源分配(例如内存)会导致这种情况,但在这种情况下,它只会重新启动,而不是死亡。
我对PM2不是很熟悉,这更像是一个实验,让Angular SSR在使用PM2的节点服务器上正常工作,所以我可能在设置它时做错了什么。
我试着在谷歌上搜索可能的答案,但结果hereherehere并没有真正的帮助。会很高兴有几个指针,如何设置这一正确的稳定生产模式。
谢谢。

wfsdck30

wfsdck301#

我通过运行下面的命令解决了这个问题。

npm uninstall -g pm2
npm install -g pm2@3.2.2

相关问题