我按照这个article有一个Ubuntu Nginx,Rails,和瘦服务器,但当访问主页时,我得到500 Internal Server Error和以下错误日志:
2012/09/29 18:43:14 [alert] 15917#0: *1013 socket() failed (24: Too many open files) while connecting to upstream, client: 50.57.229.222, server: 50.57.229.222, request: "GET / HTTP/1.0", upstream: "http://50.57.229.222:80/", host: "50.57.229.222"知道这是怎么回事吗?
/etc/nginx/sites-enabled/gitwatcher.com位于:
upstream gitwatcher {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
server_name 50.57.229.222;
access_log /var/www/gitwatcher/log/access.log;
error_log /var/www/gitwatcher/log/error.log;
root /var/www/gitwatcher;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby;
}
location @ruby {
proxy_pass http://50.57.229.222;
}
}发布于 2012-10-08 20:15:44
感谢你们的回答,
无论如何,下面的文章解决了一个错误的nginx conf:http://articles.slicehost.com/2009/3/13/ubuntu-intrepid-nginx-rails-and-thin
发布于 2012-09-30 07:09:09
我认为您的nginx配置中有一个循环。此部分说明在端口80上侦听:
server {
listen 80;
server_name 50.57.229.222;
[...]但是稍后,您可以说将请求转发到相同的端口和IP地址:
location @ruby {
proxy_pass http://50.57.229.222;
}因此,Nginx决定将请求转发给自己。然后,它决定将新请求转发给自己。以此类推,直到您用完了内核的所有文件描述符。
最有可能的是,您的瘦服务器运行在不同的端口上。在配置的后一部分中,您需要在URL中使用该端口。
发布于 2012-09-30 05:29:59
这里的提示在错误消息中:
1013 socket() failed (24: Too many open files) while connecting to upstream这很可能意味着你遇到了ulimit问题(这在低流量水平下很奇怪,但很有可能,这取决于应用程序正在做什么)。
ulimit -n通常会显示打开文件句柄的限制。我认为这在OS上是相当低的,在许多Linux风格的系统上通常是1024。您可以在安装了ulimit -n 8192 (或类似系统)的Linux计算机上临时增加它,但这不会在会话之间持久。
要永久解决这个问题,您需要设置您的ulimits。谷歌搜索“打开的文件太多ulimit”和你的操作系统,以获得更多信息;每个操作系统的程序略有不同。
Redhat-ish系统
编辑/etc/security/limits.conf。在底部,添加如下内容:
* 8192 8192这会将所有用户的软和硬ulimit设置为一次8192个打开的文件句柄。您需要重新启动才能使其生效,但您可以发出ulimit -n 8192命令,以便立即将该限制应用于该会话的该用户。
OS X
有关如何在OS X平台上增加文件ulimit的详细说明,请参阅this answer。
https://stackoverflow.com/questions/12656524
复制相似问题