在Puma和nginx上运行的Rails应用程序每隔几个小时就会与Bad Gateway一起死亡

时间:2014-09-10 02:39:51

标签: ruby-on-rails nginx puma

我有一个我刚刚部署到Digital Ocean的rails应用程序,它在Puma和Nginx上运行。

最终它返回的是一个糟糕的网关,这就是error.log

中的内容
2014/09/09 22:23:06 [error] 5729#0: *3059 connect() to unix:///var/www/mysite/mysite_app.sock failed (111: Connection refused) while connecting to upstream, client: 67.5.19.192, server: mysite.com, request: "GET / HTTP/1.1", upstream: "http://unix:///var/www/mysite/mysite_app.sock:/", host: "mysite.com"

为了解决这个问题,我只是重启puma,它似乎有用。

我如何调试这个以找出它为什么一直在死?

这是我的nginx配置:

upstream mysite {
                server unix:///var/www/mysite/mysite_app.sock;
        }
        server {
                listen 80;
                server_name mysite.com;
                root /var/www/mysite/current/public;
        client_max_body_size 20M;

                location / {
                        proxy_pass http://mysite; # match the name of upstream directive which is defined above
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
                location ~* ^/assets/ {
                        # Per RFC2616 - 1 year maximum expiry
                        expires 1y;
                        add_header Cache-Control public;

                        # Some browsers still send conditional-GET requests if there's a
                        # Last-Modified header or an ETag header even if they haven't
                        # reached the expiry date sent in the Expires header.
                        add_header Last-Modified "";
                        add_header ETag "";
                        break;
                }
        }

修改

这可能是由于内存不足造成的吗?

这是我当前的记忆状态,但是由于我经常运行这个命令,所以可用内存量下降,一旦我重启puma,它会跳回到150.

$ free -m
             total       used       free     shared    buffers     cached
Mem:           490        440         50          0         17         84
-/+ buffers/cache:        338        151
Swap:            0          0          0

3 个答案:

答案 0 :(得分:4)

看起来这实际上是ruby 2.1(特别是我使用2.1.2)及其垃圾收集的问题。

像这样的谷歌搜索似乎有很多不同的主题http://bit.ly/1s2vBC0

这是关于此问题的红宝石错误票:https://bugs.ruby-lang.org/issues/9607

答案 1 :(得分:1)

内存不足可能会出问题,但你最好只关注puma和rails日志,而不是nginx。在应用程序文件夹中:

tail -f log/puma*
tail -f log/production.log

答案 2 :(得分:0)

我遇到了类似的问题,但我注意到2.1.3现已发布,并专门讨论了内存问题:

https://www.ruby-lang.org/en/news/2014/09/19/ruby-2-1-3-is-released/

我现在要试试吧!