【问题标题】:How to find which error has caused pm2 to restart如何查找导致pm2重启的错误
【发布时间】:2020-10-18 02:20:58
【问题描述】:

我正在运行带有 pm2 的 Node.js puppeteer 脚本。 保持这个过程稳定很重要。工作 2 天后,我在 pm2 统计数据中看到 2 次重启。

我想找出导致重新启动的原因。在我的错误日志中,我看到了 3 个主要错误:

Error: Page crashed (puppeteer )
Error: Quit inactivity timeout (mysql)
or: Timed out after 30000 ms while trying to connect to Chrome! (puppeteer )

这是我的错误日志(我只留下了第一个错误的完整堆栈数据,因为类似的错误具有相同的堆栈)

Error: Page crashed!
    at Page._onTargetCrashed (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/puppeteer/lib/Page.js:156:24)
    at CDPSession.Page.client.on.event (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/puppeteer/lib/Page.js:132:56)
    at CDPSession.emit (events.js:198:13)
    at CDPSession._onMessage (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/puppeteer/lib/Connection.js:232:12)
    at Connection._onMessage (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/puppeteer/lib/Connection.js:119:19)
    at WebSocket.emit (events.js:198:13)
    at Receiver.receiverOnMessage (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/ws/lib/websocket.js:720:20)
    at Receiver.emit (events.js:198:13)
    at Receiver.dataMessage (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/ws/lib/receiver.js:414:14)
    at Receiver.getData (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/ws/lib/receiver.js:346:17)

Error: Page crashed!
Error: Page crashed!
Error: Page crashed!
Error: Page crashed!
{ Error: Quit inactivity timeout
    at Quit.<anonymous> (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/mysql/lib/protocol/Protocol.js:163:17)
    at Quit.emit (events.js:198:13)
    at Quit._onTimeout (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/mysql/lib/protocol/sequences/Sequence.js:124:8)
    at Timer._onTimeout (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/mysql/lib/protocol/Timer.js:32:23)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)
  code: 'PROTOCOL_SEQUENCE_TIMEOUT',
  fatal: true,
  timeout: 30000 }
{ Error: Quit inactivity timeout}
Error: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r564778
    at Timeout.onTimeout (/home/mysite/domains/mysite.xyz/laravel/robots/node_modules/puppeteer/lib/Launcher.js:296:14)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)
Error: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r564778
Error: Timed out after 30000 ms while trying to connect to Chrome! The only Chrome revision guaranteed to work is r564778

如何找出导致重启的错误?

p.s.:伙计们,我已经在我的问题中发布了日志,我知道如何检查日志!请仔细阅读问题!

【问题讨论】:

  • 您可以通过pm2 log process_id查看您的进程日志,您可以通过pm2 listpm2 l查看您的process_id
  • @Tyagithanx 。我已经有了日志,你可以看到我已经发布了错误日志,问题是我不知道是哪个错误导致了重启......我通常通过查看 pm2 日志文件来获取日志.. 或pm2 logs scriptname跨度>
  • 你能在问题中分享你的 puppeteer 脚本吗? (共享包含page.launchpage.goto 的部分就足够了)。我不能保证我会给你一个答案“哪个错误导致 pm2 重新启动”,但我猜你的 puppeteer 脚本可以确认。
  • @hretic 你能回答我两天前的评论吗?我保证我不会回答 pm2 logs ;P 如果你在那里:Node 和 puppeteer 版本也非常有用。

标签: javascript node.js puppeteer pm2


【解决方案1】:

要查看进程重启原因的日志,您可以尝试多种方法:

  1. pm2 logs fileName.js

  2. 为 Node.js 进程注册 exceptionHandlers 以捕获不同的异常。

参考:https://nodejs.org/api/process.html#process_warning_using_uncaughtexception_correctly

  1. 根据进程 ID 在系统中检查该进程的日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2011-05-24
    相关资源
    最近更新 更多