运行在Puma和nginx上的Rails应用程序每隔几个小时就会通过Bad Gateway死去

我有一个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" 

要解决它,我只是重新启动美洲狮,它似乎工作。

我怎样才能debugging这个弄清楚为什么它会死?

这是我的nginxconfiguration:

 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 

看来这实际上是一个问题与红宝石2.1(特别是我使用2.1.2)及其垃圾收集。

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

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

缺乏内存可能是问题,但你最好看看美洲狮和铁轨日志,而不是nginx只。 在应用程序文件夹中:

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

我有类似的问题,但我注意到,2.1.3现在已经发布,具体讨论内存问题:

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

我现在要试一试!