我正在为一个网站运行一个带有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的节点服务器上正常工作,所以我可能在设置它时做错了什么。
我试着在谷歌上搜索可能的答案,但结果here和here或here并没有真正的帮助。会很高兴有几个指针,如何设置这一正确的稳定生产模式。
谢谢。
1条答案
按热度按时间wfsdck301#
我通过运行下面的命令解决了这个问题。