偶尔会在IBM Bluemix上执行我的node.js应用程序期间收到502错误的网关

我正在Bluemix上运行一个node.js应用程序,它基本上是用于在Cloudant(CouchDb)数据库上进行读/写操作的REST API。 传入的请求通过注入的passport-http-bearer策略中间件进入express框架。 我的应用程序使用不记名令牌来接收有关用户的信息。

目前这不是很高效(我们正在研究一个caching机制),但总的来说,它是有效的。 当我并行发送多个请求时(例如在函数testing中),有时我收到502错误的网关响应,而不是预期的结果,几乎每个testing套件都运行失败。 在我的本地部署,它没有任何问题。

也许你有一个缩放问题? 当你说很多并行请求时 – 服务响应时间是否可能超出了路由器期望的时间(120秒,我认为)有很多请求?

你可以尝试用Apache Bench来让你的应用程序变得更难吗?

ab -n 10000 -c 100 -s 120 -H "Authorization: Bearer <token>" https://your-app/ 

然后在平行检查响应类似的东西:

 #!/bin/bash BEARER=<your-token> URL=<your-app> TIMEFORMAT="TIME: %E" while true; do R=$(time echo -e REQUEST: $(date)\\nREPLY: $(curl -X GET -s --insecure --header "Accept: application/json" --header "Authorization: Bearer $BEARER" "https://$URL") 2>>trace); echo "$R" >>trace; echo $R|grep -q "502" && echo -e "Found 502 reply\n$R"; done 

生命值

@ Jeff-Sloyer在推送脚本中提示重试逻辑是正确的。 此外,还应该检查运行时的状态以及Bluemix状态页面上正在使用的所有服务。 有关您为什么可能会收到此错误的更多信息,请参阅下列信息:

https://www.ng.bluemix.net/docs/troubleshoot/managingapps.html

我已经看到这与不可靠的networking。 我会使用一些重试login您的推脚本来保证部署。