【发布时间】:2020-03-15 18:35:16
【问题描述】:
在我的 Node.js 应用程序中,我调用了一个外部 API,它需要 7 多分钟才能得到响应,与此同时我得到了这个:
PM2 日志:应用程序 [server:0] 通过信号 [SIGKILL] 以代码 [0] 退出
并且进程被杀死。
【问题讨论】:
在我的 Node.js 应用程序中,我调用了一个外部 API,它需要 7 多分钟才能得到响应,与此同时我得到了这个:
PM2 日志:应用程序 [server:0] 通过信号 [SIGKILL] 以代码 [0] 退出
并且进程被杀死。
【问题讨论】:
通常在网络上等待一分钟已经是一种信号。 Chrome 标准超时为 3 分钟,所以我认为您绝对应该检查您的服务器是否在您对外部 API 的请求中没有抛出超时错误。
服务器编写的另一个好习惯是让它永远不会因错误而崩溃,总是用 try catch 包装所有内容,使用验证来捕获错误并发送回一些准备好的响应,或者在最坏的情况下只是在服务器控制台中输出错误,但仍然在此之后使服务器可用于证明其他请求。
PM2 是守护进程,但它仅在您的服务器有时崩溃并需要启动时才有用,如果它经常崩溃 pm2 没有用,您需要修复您的服务器。
想一想,还要检查该请求是否占用过多资源来处理,如果系统耗尽资源,它将杀死您的进程。
【讨论】:
这解决了我的问题。
首先停止并删除您当前正在运行的 PM2 应用程序。
pm2 stop <app name>
pm2 delete <app name>
然后执行以下命令:
pm2 kill
rm -rf ~/.pm2
现在再次启动您的应用并查看日志。
pm2 start <app name>
pm2 logs
【讨论】: