Reactjs PM2和nextjs在正常运行几天后停止响应请求
我当前的设置是nginx->reverse proxy->nextjs。我在nextjs上使用pm2和集群模式。问题是在nextjs运行10分钟后,它停止响应,没有任何错误,但当我用pm2 restart all重新启动nextjs应用程序时,这个问题得到了解决。看起来我的nextjs应用程序只运行了10分钟,之后我必须重新启动。所以我必须运行cron作业来完成这项工作 pm2日志输出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 -
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",
...
}
]
}