我有一个应用程序试图从Javascript应用程序发出ajax请求,以从nginx服务器检索xml文件。通常一切都很好,但我经常看到nginx日志中的错误(并从我的应用程序错误报告中获取错误)nginx在get期间会出现超时:
2015/11/16 21:15:21 [error] 1208#0: *4894044 upstream timed out (110: Connection timed out) while connecting to upstream, client: 209.95.138.54, server: www.servername.com, request: "GET /Shape%20Textures/Metal/Born%20to%20Shine.jpg?agentView=436314 HTTP/1.1", upstream: "http://127.0.0.1:3000/AQO/Shape%20Textures/Metal/Born%20to%20Shine.jpg?agentView=436314", host: "www.servername.com.com", referrer: "https://www.servername.com.com/?nid=39956&mode=edit"
我们有时也会遇到类似的错误:
2015/11/17 19:03:16 [error] 1002#0: *54042 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 137.164.121.52, server: www.servername.com, request: "POST /projects/?q=node/36375/update_project_time_and_stats HTTP/1.1", upstream: "http://127.0.0.1:3000/projects/?q=node/36375/update_project_time_and_stats", host: "www.servername.com", referrer: "https://www.servername.com/AQO/?nid=36375&mode=edit"
我看似类似的帖子有类似的超时,但所有这些帖子似乎都是可重复的。这个问题从来没有发生在我身上,但在现场服务器上运行我每天会看到5到30个这样的超时。
这是我的nginx配置:
client_max_body_size 50M;
server {
server_name servername.com;
return 301 $scheme://www.servername.com$request_uri;
}
server {
listen 80;
listen 443 ssl;
fastcgi_read_timeout 120;
ssl_certificate /path/to/ssl/star_servername_com.pem;
ssl_certificate_key /path/to/ssl/star_servername_com.key;
# Redirect all non-SSL traffic to SSL.
if ($ssl_protocol = "") {
rewrite ^ https://$host$request_uri? permanent;
}
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name www.servername.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 120s;
}
}
由于我无法重现它,我想知道如何才能追踪这个问题?
答案 0 :(得分:1)
连接时上游超时(110:连接超时) 上游
表示您的上游服务器未及时接受连接
在读取响应时,上游超时(110:连接超时) 来自上游的标题
表示您的上游服务器没有及时回复
请检查您的上游服务器127.0.0.1:3000。它可能设置了少量传入连接或某种DDoS保护,或者此刻或其他东西真的很重。
答案 1 :(得分:1)
我想参考this answer,其中介绍了如何优化您的设置。
虽然不是最佳解决方案,但非常依赖于您希望实现的目标,您只需将proxy_read_timeout
增加到例如300
。