返回超时的原因:
1.程序在处理大量数据,导致等待超时。
2.程序中调用外部请求(包括连接数据库),请求响应超时。
遇到该情况时的解决思路:
1、先优化程序,缩短执行时间,通常504相关的错误码在没有思路的时候,可以打印关键节点执行的时间,优化执行时间较长的代码。
2、检查nginx的参数设置是否合理,过小的话调大nginx超时限制的参数:proxy_connect_timeout,proxy_send_timeout,proxy_read_timeout ,send_timeout使程序可以正常执行。
在某次测试过程中发现,访问某个接口第一次可以成功,之后都失败,经过分析发现属于第一种原因。项目代码中产生随机数的方法时间过长导致,使用SecureRandom.getInstanceStrong()获取SecureRandom实例并调用其next方法时, 在测试环境(linux)产生较长时间的阻塞, 但开发环境(windows10)并未重现。后改成使用new SecureRandom()获取SecureRandom 解决。