[英]Rails app on Nginx/Passenger/Capistrano: assets not working
[英]Rails app (Nginx / Passenger) freezes up for 20+ minutes after capistrano deploy
我有一个Rails 4应用,该应用遇到了Capistrano部署问题。 每次Capistrano部署后,Web应用程序会挂起很长时间(HTTP请求被暂停,无法通过浏览器访问网站), 有时会长达20分钟甚至30分钟。
我想认为部署是相当标准的。 通用程序为:
git push
送到远程服务器 :publishing
capistrano/bundler
捆绑安装 touch tmp/restart
Capfile
没有任何棘手的Capfile
:
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/bundler'
运行cap server deploy
成功完成,并在大约10秒内返回。 但是,完成之后,服务器将关闭并保持很长时间(“冻结”),直到最终恢复正常并部署新版本。
发生这种情况时,我能够ssh
进入服务器(尽管提示非常缓慢),并且我可以看到ruby / Passenger RackApp耗尽了其所有资源:
最佳:
>top
PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
.. .. .. .. .. . 50.1 18.4 .. ruby
.. .. .. .. .. . 49.8 18.7 .. ruby
.. .. .. .. .. . 49.9 21.1 .. ruby
.. .. .. .. .. . 49.5 20.9 .. ruby
该服务器具有两个核心,因此它是所有可用的CPU。
ps aux展示了几个来宾Passenger RackApp的实例:
>ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user .... 11.0 18.3 .. .. .. .. .. 2:05 Passenger RackApp: /www/myRailsApp/current
user .... 12.1 18.3 .. .. .. .. .. 1:35 Passenger RackApp: /www/myRailsApp/current
user .... 12.1 20.3 .. .. .. .. .. 1:33 Passenger RackApp: /www/myRailsApp/current
user .... 14.7 21.0 .. .. .. .. .. 1:21 Passenger RackApp: /www/myRailsApp/current
user .... 5.6 12.5 .. .. .. .. .. 0:24 Passenger RackApp: /www/myRailsApp/current
user .... 5.8 6.6 .. .. .. .. .. 0:07 Passenger AppPreloader: /www/myRailsApp/current
user .... 0.7 7.6 .. .. .. .. .. 0:01 Passenger RackApp: /www/myRailsApp/current
乘客状态通常如下所示:
>passenger-status
Version : 4.0.41
Date : 2014-07-23 15:25:11 +0000
Instance: 19086
----------- General information -----------
Max pool size : 6
Processes : 3
Requests in top-level queue : 0
----------- Application groups -----------
/www/myRailsApp/current#default:
App root: /www/myRailsApp/current
Requests in queue: 0
* PID: 3173 Sessions: 1 Processed: 1 Uptime: 3m 7s
CPU: 70% Memory : 426M Last used: 3m 7s ago
* PID: 3194 Sessions: 1 Processed: 1 Uptime: 3m 1s
CPU: 69% Memory : 361M Last used: 3m 0s ago
* PID: 3220 Sessions: 1 Processed: 1 Uptime: 2m 40s
CPU: 67% Memory : 349M Last used: 2m 39s ago
日志(nginx,rails)不显示任何内容。
版本:
Rails 4.1.0
nginx version: nginx/1.4.1
Passenger Version : 4.0.41
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
我的主要问题是:
似乎Capistrano部署中的某些操作导致您的应用程序(而不是Passenger本身)进行了一些耗时20分钟的繁重处理。 您不仅可以在CPU使用率中看到,而且可以在“会话:1”标签中看到。 这意味着当时所有这些进程都在忙于处理请求
诊断此问题的最佳方法是找出您的应用程序在做什么。 阅读Phusion博客以了解操作方法。 特别是,您可以使用SIGQUIT技巧来获取进程的回溯。
您还可以运行passenger-status --show=requests
来查看您的应用程序遇到了哪些请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.