bal*_*ton 1 node.js coffeescript express
所以我有一个Express.js服务器设置,但在生产约5分钟后 - http://balupton.com - 它崩溃并重新启动.
我的网站的源代码在这里:https://github.com/balupton/balupton.docpad/blob/master/server.coffee
它用于创建服务器的docpad参考位于:https: //github.com/bevry/docpad/blob/master/lib/docpad.coffee#L589
它托管在http://no.de上,这是每5分钟左右不断出现在日志中的内存不足异常:
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
[ Jul 7 14:02:13 Stopping because all processes in service exited. ]
[ Jul 7 14:02:13 Executing stop method (:kill). ]
[ Jul 7 14:02:13 Executing start method ("env `cat /home/node/node-service/profile` /opt/nodejs/latest/bin/node /home/node/node-service/releases/20110707135409/server.js &"). ]
[ Jul 7 14:02:13 Method "start" exited with status 0. ]
Express server listening on port 80 and directory /home/node/node-service/releases/20110707135409/out
我到处都看了,但我已经放弃了.谁能帮我?
问题原来是中间件.拥有静态中间件意味着当找不到静态文件时,静态中间件会尝试将请求发送到下一个中间件 - 这个中间件不存在,所以它只会让请求永远打开 - 所以非常快速地打开连接开始起床(由于蜘蛛爬行不存在的网址)并且每次资源耗尽时都会崩溃服务器.
解决方案是添加一个404中间件作为最后一个中间件运行如下:
# 404 Middleware
myServerInstance.use (req,res,next) ->
res.send(404)
Run Code Online (Sandbox Code Playgroud)
这样,当静态中间件找不到文件时,它会将其发送到下一个中间件,最终将命中404中间件,并发送404而不是永久保持请求打开.
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |