Nginx 504 Gateway Time-out的问题分析

文章讨论了程序超时的原因,如处理大数据和外部请求响应慢,并提出优化程序和调整nginx配置的解决策略。在测试中,发现SecureRandom.getInstanceStrong()在Linux环境下导致阻塞,改用newSecureRandom()解决了问题。
摘要由CSDN通过智能技术生成

返回超时的原因:

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 解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值