记一次通过nginx反代网站请求总是超时的问题

Posted 生活不如诗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次通过nginx反代网站请求总是超时的问题相关的知识,希望对你有一定的参考价值。

问题描述

公司网站一个页面通过点击“导出数据”来进行数据的导出,后台是通过sql语句进行查询然后再导出为excel文件,因为需要查询数据过多,所以执行起来较慢,每次在等待导出一分钟之后提示网站请求超时。

解决思路

一开始查看了tomcat的连接超时时长,发现时间为20000ms,所以不是tomcat的问题,因为后台是通过nginx反向代理到tomcat,所以就把问题定位到了nginx。然后尝试了keepalive长连接,proxy_send_timeout和proxy_connect_timeout,发现都不能解决问题。后来查看nginx的错误日志发现如下报错信息:

定位问题出现于nginx等待tomcat返回请求的时候超时了,然后添加如下参数解决问题:
proxy_read_timeout 300s

总结:

proxy_read_timeout:nginx等待读取上游服务器响应报文的超时时长;
proxy_send_timeout:nginx发送请求报文到上游服务器的超时时长;
proxy_connect_timeout:上游服务器和nginx的连接超时时长;

以上是关于记一次通过nginx反代网站请求总是超时的问题的主要内容,如果未能解决你的问题,请参考以下文章

nginx反代+varnish缓存+后端LAMP平台集群实现

nginx反代varnish缓存服务器实现后端amp动静分离架构

Nginx/Httpd反代tomcat配置

Nginx反代配置

CentOS 7.1.1503 varnish动静分离反代用户请求

Nginx反代配置