SecureRandom.getInstanceStrong 有深坑

最近用上了sonarqute 对项目进行了扫描,接纳了针对 new SecureRandom() 变更为 SecureRandom.getInstanceStrong() 的建议,结果深坑似海~

事发

一个内部应用项目, 需要短信进行验证登录,需要生成随机验证码,但是发版本后,请求长时间不回执,最终502 504, 无异常。

排查过程

查看日志,因为没加上 requestid/traceid 只能通过thread按照时间端查询,经过查询,基本都是一个状态

针对 thread http-nio-8000-exec-1 查抄,后面就再也没出现这一线程
真的是 百思不得其解 , 于是 开始疯狂加 log 日志,在测试环境中进行测试

注意: 重点来了,wsl 环境中模仿了centos, 竟然顺利执行了!

也就是说 在测试环境中,并没发现任何问题!

于是回想起来,本次版本更新对此方法 最大的操作, 就是将 验证码这个随机数更新了,铁定就是它的问题。
于是开始 度娘 起来 ,然后就知道了 这个坑爹的玩意,不同的系统下,出现的问题不一样
具体的问题分析 可以参考 这篇关于SecureRandom.getInstanceStrong()引发的线程阻塞问题分析

posted @ 2021-03-09 19:12  空明师兄  阅读(2301)  评论(0编辑  收藏  举报