自己通过cnode源码改造的服务器, 搭载在阿里云服务器上, 服务器单核, 内存512, 系统ubuntu12.04 最早使用node app.js & 启动服务器, 在运行一段时间后, 异常关闭了. 苦无日志无法排查原因, 后面使用pm2控制, 且使用nohup输出日志到指定文件中, 即使用make start 启动, 不过在服务启动一段时间后(此期间没有频繁的访问页面, 只是稍稍地访问了几次首页). 程序依然异常关闭, 且pm2没有能够自动重启服务, 只在.pm2/pm2.log 看到如下相关异常日志. 不知是何原因, 望请帮忙求解. 2015-04-11 11:24:49: [PM2][WORKER] Started with refreshing interval: 30000 2015-04-11 11:24:49: [[[[ PM2/God daemon launched ]]]] 2015-04-11 11:24:49: BUS system [READY] on port /root/.pm2/pub.sock 2015-04-11 11:24:49: RPC interface [READY] on port /root/.pm2/rpc.sock 2015-04-11 11:24:49: Starting execution sequence in -cluster mode- for app name:app id:0 2015-04-11 11:24:49: App name:app id:0 online 2015-04-11 13:52:21: ERROR CAUGHT BY DOMAIN: Error: spawn ENOMEM at exports._errnoException (util.js:746:11) at ChildProcess.spawn (child_process.js:1155:11) at exports.spawn (child_process.js:988:9) at Object.exports.execFile (child_process.js:682:15) at exports.exec (child_process.js:642:18) at getUrl (/root/qjzd-club/qjzdclub/node_modules/pm2/node_modules/vizion/lib/git.js:15:5) at fn (/root/qjzd-club/qjzdclub/node_modules/async/lib/async.js:641:34) at Immediate._onImmediate (/root/qjzd-club/qjzdclub/node_modules/async/lib/async.js:557:34) at processImmediate [as _immediateCallback] (timers.js:358:17)
所用平台的内存有限制?下面的错误和你的是一样的,也是512内存限制。 http://stackoverflow.com/questions/26193654/node-js-catch-enomem-error-thrown-after-spawn
@leapon 我的服务器系统是ubuntu12.04. 看了文章的意思是, node默认会慢慢消耗512M的内存, 最终导致内存溢出, 导致程序崩溃? 我先试试把设置参数–max-old-space-size=256, 看看效果如何.
512 内存是不是太小了?现在 0.12 的 nodejs 占内存比原来多不少。线上的 cnode 一般内存占用会在 350M 左右。加上一些杂七杂八的,内存就不够用了。
@alsotang 哇, 确实耗内存, 运行cnode程序后, 内存比平时多占用了200M. free -m total used free shared buffers cached Mem: 490 427 62 0 21 60 -/+ buffers/cache: 346 143 Swap: 0 0 0
@alsotang 不过此前在还没有redis之前, 没有异常退出过哇. 我现在的redis服务器和cnode程序在同一台机器上, 感觉redis服务器应该比较耗内存, redis不断的缓存着数据, 逐渐占用着内存, 这也可以解释为什么刚开始程序稳定, 到后面程序因内存不足就奔溃了.