这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战
前言
今天花了一些时间帮助同事解决关于一个网络连接超时的问题,问题大概是这样的:系统中有一个模块的功能需要上传Excel文件进行导入,但是上传的过程中,加入Excel中的记录数到达一定的阈值以后,上传的时间会变长,超过一分钟。一分钟以后就导致超时,前端会报504错误。率先断开与后端的连接,就拿不到后端返回的检验错误的信息。
解决过程
首先我确定了产生问题的两个方面:Nginx和SpringBoot开放的Rest接口配置的问题,首先我查找了Spring上的超时时间的配置项server.tomcat.connection-timeout,但是这个配置项在SpringBoot 2.0.5中的yml文件中找不到,反之,找到了server.connection-timeout这个配置项,所以我们就把它设置了600000ms,本次修改结果:SpringBoot的Swagger接口没有超时,但是前端转发的API依然超时,由此次排除可以断定,应该是前端转发的问题,看到StackOverFlow上的一个回答也有说明,504一般都是代理服务器上的,因为前端是由Nginx进行转发的,所以又再找到了一篇关于Nginx配置超时时间的修改方法,首先在nginx.conf加上以下配置:
location /tls/api/v1 {
proxy_pass https://fcai-fci-alerts-insight-tls-analytics:3333;
client_max_body_size 20m;
// 超时时间设置
proxy_read_timeout 600s;
}
然后在运行Nginx重新加载的命令:
ngix -s reload
修改完成之后,我们进行了重新的测试,果然,在超过一分钟之后,前端还没有报504错误,由此解决了这个网络504问题。
总结
遇到问题,一定不要着急,要静下心来,仔细分析问题产生的根源,然后针对分析的结果,逐一的进行排查测试,看是否由于该根源产生的。