使用SecureRandom.getInstanceStrong() 遇到的深坑

项目场景:

项目部署的环境是 华为云CCE敏捷版,在项目中需要用到 SecureRandom.getInstanceStrong() 生成随机数,并把随机数作为入参传给外部电子签系统;


问题描述

在本地测试中性能没问题,文件签署很快就完成了,但是在测试环境和正式环境上运行速度很慢,但是又没有报错,即使前端响应超时报错了,后端还是在兢兢业业的签署着;


原因分析:

分析了很多种情况都没找到原因,后来在每个方法开头,结尾都加上了log.info,确定了哪个方法执行慢,又在该方法每行代码都加上log.info,在后台看log输出时间;
虽然很蠢,但是有用
最终发现问题所在

double nonce = SecureRandom.getInstanceStrong().nextDouble();

这行代码log跟下行代码隔了2-4分钟。
原因应该是,dockers中系统扰动太少,执行该代码时造成了线程阻塞。


解决方案:

将该行代码改为

double nonce = new SecureRandom().nextDouble();

本地测试通过后上传测试环境继续测试,发现跟本地测试一样快。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值