【发布时间】:2017-10-07 16:00:19
【问题描述】:
这两个都可以启动我的应用程序:
node app
pm2 start app.js
以下不工作(应用不工作,但 PM2 状态显示 2 个实例在线)并且不记录任何错误:
pm2 start app.js -i 2 --watch -l log/log.log
使用以下 process.json 文件启动也不起作用(但 PM2 状态仍显示 2 个在线实例)并且不会记录任何错误:
{
"apps" : [{
"name" : "app",
"script" : "./app.js",
"instances" : 0,
"exec_mode" : "cluster",
"watch" : true,
"ignore_watch" : ["tmp","public","images_review"],
"error_file" : "./logs/error.log",
"out_file" : "./logs/out.log",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
}]
}
使用以下 process.json 文件在 fork 模式下启动仍然无法正常工作,但会记录错误。
{
"apps" : [{
"name" : "app",
"script" : "./app.js",
"instances" : 0,
"watch" : true,
"ignore_watch" : ["tmp","public","images_review"],
"error_file" : "./logs/error.log",
"out_file" : "./logs/out.log",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
}]
}
它记录的错误是“错误:监听 EADDRINUSE :::3000”。我检查并没有使用端口 3000。我还将我的 node.js 应用程序切换为使用不同的端口,但它仍然为我尝试的每个端口提供 EADDRINUSE 错误。我在一个运行 Plesk Onyx 的 Centos 7 的 2 核 linode 上。我错过了什么?
【问题讨论】:
-
app.js是做什么的? -
这是一个快递应用。
-
在使用fork模式时应该会出现这个错误:集群模式允许多个进程使用同一个端口但fork模式不允许,所以第二个启动的进程会得到错误因为第一个进程已经在监听:3000。我假设 "does not work" 是指在 pm2 启动后无法访问端口 3000?
-
很高兴知道。
-
我已经弄清楚为什么我的应用程序在杂乱模式下无法运行。我没有将日志目录添加到 ignore_watch 中,因此 pm2 会因为查看日志而循环记录并重新启动。