连接到上游时,Sinatra + Thin + Nginx connect() 失败(111:连接被拒绝)
Sinatra + Thin + Nginx connect() failed (111: Connection refused) while connecting to upstream
我有一个 Sinatra 应用程序 运行 在 Thin 上使用 Nginx 作为反向代理并接收大量流量。
我的用户报告 502 错误并查看 Nginx 日志我看到了很多这样的错误:
[warn] upstream server temporarily disabled while connecting to upstream
[error] connect() failed (111: Connection refused) while connecting to upstream
如果我查看 Sinatra 应用程序的日志,我没有发现任何错误。
我从以下内容开始:
--max-conns 15360 --max-persistent-conns 2048 --threaded start
我为 Ninx 设置了以下内容:
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 15360;
}
Sinatra 应用程序的主机文件:
server {
server_name my_sinatra_app;
#lots of bots try to find vulnerabilities in php sites
location ~ \.php {
return 404;
}
location / {
proxy_pass http://localhost:6903;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
#increase buffers
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
listen 443 ssl; # managed by Certbot
#...
#SSL stuff
}
为什么会这样?流量太大?
有什么解决办法?我是否一直增加 worker_connections
和 --max-conns
直到错误停止?
htop
的输出似乎服务器可以处理更多:
任何insight/advice?
编辑
虽然我在 Sinatra 日志或 systemctl status
输出中没有看到任何错误,但我确实注意到该服务从未运行过很长时间,因此瘦服务器似乎经常崩溃。知道如何进一步调试吗?
所以问题实际上出在瘦服务器上,出于某种原因,它每隔几分钟就会因 C++ 错误而崩溃,因此 Nginx 在尝试连接到瘦服务器时会抛出这些错误并失败(因为瘦服务器会 crashing/rebooting).
解决方案是用 Puma 替换 Thin,之后就没有问题了。
我有一个 Sinatra 应用程序 运行 在 Thin 上使用 Nginx 作为反向代理并接收大量流量。 我的用户报告 502 错误并查看 Nginx 日志我看到了很多这样的错误:
[warn] upstream server temporarily disabled while connecting to upstream
[error] connect() failed (111: Connection refused) while connecting to upstream
如果我查看 Sinatra 应用程序的日志,我没有发现任何错误。
我从以下内容开始:
--max-conns 15360 --max-persistent-conns 2048 --threaded start
我为 Ninx 设置了以下内容:
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 15360;
}
Sinatra 应用程序的主机文件:
server {
server_name my_sinatra_app;
#lots of bots try to find vulnerabilities in php sites
location ~ \.php {
return 404;
}
location / {
proxy_pass http://localhost:6903;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
#increase buffers
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
listen 443 ssl; # managed by Certbot
#...
#SSL stuff
}
为什么会这样?流量太大?
有什么解决办法?我是否一直增加 worker_connections
和 --max-conns
直到错误停止?
htop
的输出似乎服务器可以处理更多:
任何insight/advice?
编辑
虽然我在 Sinatra 日志或 systemctl status
输出中没有看到任何错误,但我确实注意到该服务从未运行过很长时间,因此瘦服务器似乎经常崩溃。知道如何进一步调试吗?
所以问题实际上出在瘦服务器上,出于某种原因,它每隔几分钟就会因 C++ 错误而崩溃,因此 Nginx 在尝试连接到瘦服务器时会抛出这些错误并失败(因为瘦服务器会 crashing/rebooting).
解决方案是用 Puma 替换 Thin,之后就没有问题了。