Reactjs PM2和nextjs在正常运行几天后停止响应请求

Reactjs PM2和nextjs在正常运行几天后停止响应请求,reactjs,nginx,webserver,next.js,pm2,Reactjs,Nginx,Webserver,Next.js,Pm2,我当前的设置是nginx->reverse proxy->nextjs。我在nextjs上使用pm2和集群模式。问题是在nextjs运行10分钟后,它停止响应,没有任何错误,但当我用pm2 restart all重新启动nextjs应用程序时,这个问题得到了解决。看起来我的nextjs应用程序只运行了10分钟,之后我必须重新启动。所以我必须运行cron作业来完成这项工作 pm2日志输出 2020-01-14T09:40:02: PM2 log: App [npm:0] starting in -

我当前的设置是nginx->reverse proxy->nextjs。我在nextjs上使用pm2和集群模式。问题是在nextjs运行10分钟后,它停止响应,没有任何错误,但当我用pm2 restart all重新启动nextjs应用程序时,这个问题得到了解决。看起来我的nextjs应用程序只运行了10分钟,之后我必须重新启动。所以我必须运行cron作业来完成这项工作

pm2日志输出

2020-01-14T09:40:02: PM2 log: App [npm:0] starting in -cluster mode-
2020-01-14T09:40:02: PM2 log: App [npm:0] online
2020-01-14T09:40:02: PM2 log: App [npm:1] starting in -cluster mode-
2020-01-14T09:40:02: PM2 log: App [npm:1] online
2020-01-14T09:40:02: PM2 log: App [npm:2] starting in -cluster mode-
2020-01-14T09:40:03: PM2 log: App [npm:2] online
2020-01-14T09:40:03: PM2 log: App [npm:3] starting in -cluster mode-
2020-01-14T09:40:03: PM2 log: App [npm:3] online
2020-01-14T09:40:03: PM2 log: App [npm:4] starting in -cluster mode-
2020-01-14T09:40:03: PM2 log: App [npm:4] online
2020-01-14T09:40:03: PM2 log: App [npm:5] starting in -cluster mode-
2020-01-14T09:40:03: PM2 log: App [npm:5] online
2020-01-14T09:40:03: PM2 log: App [npm:6] starting in -cluster mode-
2020-01-14T09:40:03: PM2 log: App [npm:6] online
2020-01-14T09:40:03: PM2 log: App [npm:7] starting in -cluster mode-
2020-01-14T09:40:03: PM2 log: App [npm:7] online
> Server started at http://localhost:3000 with development ? false
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1306:14)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at /Users/username/Data/Projects/reactjs/ssr/server.js:90:8
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1306:14)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at /Users/username/Data/Projects/reactjs/ssr/server.js:90:8
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1306:14)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at /Users/username/Data/Projects/reactjs/ssr/server.js:90:8
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1306:14)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at /Users/username/Data/Projects/reactjs/ssr/server.js:90:8
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1306:14)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at /Users/username/Data/Projects/reactjs/ssr/server.js:90:8
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (net.js:1306:14)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at /Users/username/Data/Projects/reactjs/ssr/server.js:90:8
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 3000
}


虽然您没有提到使用npm,但我通过从
ecosystem.config.json
文件中删除npm的使用,解决了类似的问题

之前(不工作):

(工作)后:

我没有花时间深入研究npm的问题


我在这里找到了解决方案:

虽然您没有提到使用npm,但我通过从
ecosystem.config.json
文件中删除npm的使用,修复了一个类似的问题

之前(不工作):

(工作)后:

我没有花时间深入研究npm的问题


我在这里找到了解决方案:

有nginx日志吗?@Nico很抱歉我的回复太晚了。我在启动nextjs应用程序时遇到的错误是EADDRINUSE,但该应用程序可以工作。我的应用程序在集群模式下运行,pm2。你有没有其他应用程序在同一端口上运行?感谢回复@Nico。这是唯一一个在该端口上运行的应用程序。当nextjs停止响应时如果没有错误,nginx服务器从nextjs应用程序中获得499。请查看此处是否有nginx日志?@Nico抱歉我的回复太晚。我在启动nextjs应用程序时遇到的错误是EADDRINUSE,但该应用程序可以工作。我的应用程序在集群模式下运行,带有pm2。您是否有其他应用程序在同一端口上运行?感谢回复@Nico。这是唯一在该端口上运行的应用程序当nextjs停止响应而没有错误时,nginx服务器从nextjs应用程序获得499
{
  "apps": [
    {
      ...
      "script": "/usr/bin/npm",
      "args" : "start",
      ...
    }
  ]
}
{
  "apps": [
    {
      ...
      "script": "./node_modules/.bin/next",
      "args" : "start -p 3000",
      ...
    }
  ]
}