我正在使用nodejs(0.12)和express(3.1.0)。 我的服务器保持运行一段时间,但有一段时间后,它开始提供400(不良请求)并保持为下一次所有请求提供400
message: "Error: Bad Request
at SendStream.error (/var/www/storehippo/node_modules/express/node_modules/send/lib/send.js:145:16)
at SendStream.pipe (/var/www/storehippo/node_modules/express/node_modules/send/lib/send.js:298:31)
at Object.static (/var/www/storehippo/node_modules/express/node_modules/connect/lib/middleware/static.js:83:8)
at Object.handle (eval at eval at wrapHandle (/var/www/storehippo/node_modules/newrelic/lib/instrumentation/connect.js:1:0))
at /var/www/storehippo/node_modules/express/node_modules/connect/lib/proto.js:199:15
at /var/www/storehippo/node_modules/newrelic/lib/transaction/tracer/index.js:157:28
at Object.<anonymous> (/var/www/storehippo/dist/dist_17-09-2016_10:20:03/app/index.js:252:5)
at Object.handle (eval at eval at wrapHandle (/var/www/storehippo/node_modules/newrelic/lib/instrumentation/connect.js:1:0))
at /var/www/storehippo/node_modules/express/node_modules/connect/lib/proto.js:199:15
at /var/www/storehippo/node_modules/newrelic/lib/transaction/tracer/index.js:157:28"
为了修复它,我必须重启我的服务器而无法找到它的根本原因。
如何找到根本原因并解决它?
答案 0 :(得分:1)
首先,您使用的是Node 0.12 - 目前LTS版本(建议用于所有用途)为4.5.0,当前版本为6.6.0(6.x将在下个月成为LTS)。您可能会考虑升级Node,因为您使用的是非常过时的版本。 0.12的维护期将在几个月后结束,然后它将不再获得任何更新,请参阅:https://github.com/nodejs/LTS#lts_schedule
您使用的Express模块也非常过时。最新的3.x是我认为的3.21.2,当前版本的Express是4.14.0。
现在,如果你想找到问题,那么你应该从查看/var/www/storehippo/dist/dist_17-09-2016_10:20:03/app/index.js
的第252行开始,因为这似乎是该堆栈跟踪中自己代码的唯一一行。其他线似乎都是外部模块,但问题还在于其中一个模块。
可能有很多原因可能导致您的服务器运行正常然后开始行为不端 - 您可能会有一些内存泄漏,某些资源未被释放并且在一段时间后会耗尽,您可能会在应用程序中更改某些状态导致其他请求失败等等。
很遗憾,您没有包含任何可以帮助您找到问题的信息。