【发布时间】:2015-11-26 07:09:30
【问题描述】:
我有一个 Node.JS 应用程序,它执行 MySQL 数据库访问、一些 HTTP 请求、将响应 CSV 保存到文件、读取同一个文件并写入 Cassandra。我在 Ubuntu 14.04 上运行它,并且使用 Express 来公开执行上述所有任务的 Web API。
我有另一个用 Node.JS 编写的应用程序,它为 200 个用户调用 API。因为它是 Node.JS,所以调用是异步的。
我使用以下方式运行 Express 应用:
node index.js
当我运行另一个命中 Express API 的脚本时,该脚本对 200 个用户运行良好,并得到响应:
{"status":200,"message":"Got the data and saved to the DB"}
当我使用 Forever 运行同一个 Express 应用程序时:
forever start -w index.js
然后为 200 个用户运行 cron 脚本,我得到了
err { [Error: socket hang up] code: 'ECONNRESET' }
当我打开日志文件时,这是我发现的:
error: restarting script because add changed
error: Forever detected script was killed by signal: SIGKILL
error: Script restart attempt #5
既然应用程序在前台运行时运行良好,而在后台运行时被杀死,它是否需要对分配给守护进程的资源进行处理?
我应该启动我的服务器吗?或者有什么办法可以为 Express App 分配更多资源?
【问题讨论】:
-
您是否尝试在没有
-w标志的情况下运行forever? -
我做了,但结果相同。我不断地将新代码从位桶拉到这个存储库,因此使用了 -w 标志。
-
知道了!必须在 .foreverignore 中添加一个文件夹
-
你能解释一下方法吗