1、问题背景
1.1 程序调用JDK8下java.security.signature sign方法进行签名
1.2 日志打印3000多字节报文加签耗时几秒到几十、甚至几百秒
2、问题定位过程
2.1 是否发生full gc?
2.1.1 配置程序启动参数
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log
2.1.2 触发sign调用,查看gc.log日志信息
发现gc日志正常(自行了解gc日志如何分析)
2.2 纠结过程(代码审核、代码重构等等)
2.3 同事通过搜索发现有可能是secureRandom性能问题导致
通过该链接可了解并解决:
www.cnblogs.com/dflvlj/p/10…
2.4 如何定位是secureRandom性能问题导致?
2.4.1 通过日志查找到打印的阻塞的线程号
2.4.2 jstack PID
通过2.4.1中线程号找到对应输出的信息