问题描述
后台server服务响应时间正常,但是请求没有打到服务器,在nginx很慢才看到error日志,如下:
2018/07/26 10:17:42 [error] 45762#0: *7489 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 10.2.127.6, server: et_dev.rong360.com, request: “GET /data/names HTTP/1.1”, upstream: “uwsgi://127.0.0.1:8528”, host: “et_dev.rong360.com”, referrer: “http://et_dev.rong360.com/static/html/index.html”
解决方法
添加或修改nginx反向代理超时时间,如下:
server {
listen 80;
server_name XXX.rong360.com;
large_client_header_buffers 4 16k; # 读取大型客户端请求头的缓冲区的最大数量和大小
client_max_body_size 300m; #设置nginx能处理的最大请求主体大小。
client_body_buffer_size 128k; #请求主体的缓冲区大小。
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
……
location / {
uwsgi_send_timeout 600; # 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。
uwsgi_connect_timeout 600; # 指定连接到后端uWSGI的超时时间。
uwsgi_read_timeout 600; # 指定接收uWSGI应答的超时时间,完成握手后接收uWSGI应答的超时时间。
……
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
提高nginx网络吞吐量buffers优化指令说明
- large_client_header_buffers
- 此指令规定了用于读取大型客户端请求头的缓冲区的最大数量和大小。 这些缓冲区仅在缺省缓冲区不足时按需分配。 当处理请求或连接转换到保持活动状态时,释放缓冲区。
nginx代理超时配置
- proxy_connect_timeout
- 默认值60s, nginx连接到后端服务器的连接超时时间,发起握手等候响应超时时间。
注:nginx使用proxy模块时,默认的读取超时时间是60s。
nginx缓存区大小设置
- proxy_buffer_size
- nginx可从服务器一次接收的最大数据大小
proxy_temp_file_write_size 是一次访问能写入的临时文件的大小,默认是proxy_buffer_size和proxy_buffers中设置的缓冲区大小的2倍,Linux下一般是8k。
proxy_max_temp_file_size 指定当响应内容大于proxy_buffers指定的缓冲区时, 写入硬盘的临时文件的大小. 如果超过了这个值, Nginx将与Proxy服务器同步的传递内容, 而不再缓冲到硬盘. 设置为0时, 则直接关闭硬盘缓冲.
示例
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
- 1
- 2
- 3
- 4
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>