最近系统有一个问题,上传附件的接口上传大文件到30秒会超时,其他接口不存在超时问题。
逐一排查了nginx配置、php配置发现没什么问题
nginx.conf
client_max_body_size 100m;
client_header_timeout 1m;
client_body_timeout 1m;
keepalive_timeout 100;
如果配置了代理 还需要检查代理的相关设置
proxy_connect_timeout 300;
proxy_send_timeout 600;
proxy_read_timeout 600;
php.ini
memory_limit = 32M
upload_max_filesize = 8M
post_max_size = 16M
max_execution_time = 0
在nginx日志中看到接口超时请求日志状态码为499,意思是客户端关闭了连接。
ngx_null_string, /* 499, client has closed connection */
考虑到项目前后端分离,去翻前端代码,发现上传的组件中定义了超时时间,去掉后解决。
xhr.timeout = 30000; // 超时时间,单位是毫秒
百度翻的结果一般是让修改nginx的一个配置项,看起来是配置了代理服务器时遇到499的解决方案
proxy_ignore_client_abort on;