免责声明:我已经阅读了这里、stackoverflow 和其他页面上的大量帖子,但我无法找到解决方案,所以希望这会有所帮助。
我们正在 Passenger 上与 nginx 和 HAProxy 一起运行 Rails App。
乘客:4.0.7 Nginx:1.4.1
应用程序运行良好,但有时请求需要很长时间才能完成:
# nginx access.log xxxx - - [19/Mar/2015:01:07:19 +0100] "GET / HTTP/1.0" 499 0 "-" "runscope-radar/2.0"
请求花费的时间太长,nginx 返回 499,HAProxy 将其转换为 504。大约 30 分钟后,服务器恢复正常,但错误不断重复出现。
我很确定它与 HAProxy 无关,因为对机器上的 localhost 的 curl 也会返回超时。
服务器上没有什么特别的事情发生(根据 htop,4 核的 CPU 使用率从未超过 10%,并且 8GB 中只有大约 1GB 被使用,loadavg 始终低于 0.1)。
我将 ulimit 设置为 65535。
nginx 的配置文件是:
user www-data www-data;
worker_processes 1;
worker_rlimit_nofile 20000;
events {
worker_connections 768;
}
http {
passenger_root /opt/passenger/passenger-4.0.7;
passenger_ruby /usr/bin/ruby1.8;
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Virtual Hosts
include /opt/nginx/conf/sites-enabled/*;
}
nginx 中的 phusion 位置为:
server {
charset utf-8;
listen 3101;
root /srv/ruby/code/current/public;
passenger_enabled on;
passenger_base_uri /;
passenger_ruby /home/code/.rbenv/versions/1.9.3-p448/bin/ruby;
passenger_min_instances 3;
passenger_show_version_in_header off;
passenger_friendly_error_pages off;
}
我尝试了各种参数(worker_processes、worker_connections、worker_rlimit_nofile),但没有任何帮助。
还有其他建议吗?