unicorn和nginx的奇怪问题导致502错误

时间:2013-10-02 08:40:30

标签: ruby-on-rails ruby sockets nginx unicorn

我们有运行在VPS上的Ruby on Rails应用程序。这天晚上,nginx瘫痪了,并回复了#802; 502 Bad Gateway"。 Nginx错误日志包含许多以下消息:

  

2013/10/02 00:01:47 [error] 1136#0: *1 connect() to   unix:/app_directory/shared/sockets/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 5.10.83.46, server: www.website.com, request: "GET /resource/206 HTTP/1.1", upstream: "http://unix:/app_directory/shared/sockets/unicorn.sock:/resource/206", host: "www.website.com"

这些错误突然开始,因为之前的错误消息是提前5天。

所以问题出在unicorn服务器上。然后我打开了独角兽错误日志,发现只有一些信息消息,这些消息与问题无关。生产日志也没用。

我尝试通过 service nginx restart 重新启动服务器,但它没有帮助。还有一些悬而未决的独角兽进程。

当我重新部署应用程序时问题得以解决。这很奇怪,因为我在服务器发生故障前10小时部署了相同版本的应用程序。

我正在寻找任何建议如何防止这样的魔法'将来的案件。感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:2)

当nginx试图访问它时,看起来你的unicorn服务器没有运行。

这可能是由于VPS重启,独角兽进程中的一些例外,或由于可用内存不足导致的unicorn进程被终止而引起的。 (恕我直言VPS重启是最可能的原因) 通过

检查独角兽
ps aux | grep unicorn

您还可以使用

检查服务器正常运行时间
uptime

然后你可以:

  • 添加将在VPS启动时启动独角兽的脚本
  • 将其添加为服务
  • 运行一些监控流程(如monit