日常
今天和学弟学妹们在实验室吹水好不快乐,然而自己服务器问题还没解决,具体问题是——之前使用windows服务端,一直想换成linux的,然后最近终于有时间换,却发现问题解决到tomcat部署之后,部署的贼慢!大概需要5-6分钟之久,遂找到一篇大佬写的文章,就此记录。
解决
查日志
一开始我还以为是服务器搭不上去,重启了好几次,结果玩手机等了一会儿,tomcat反而启动了,当时也没太注意,后来发现每次都是固定的5分钟左右,就很奇怪了。其实tomcat的log下是会记录各种用时的,这里我们进入log目录会找到当时的记录。
可以看到SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation ,这个是罪魁祸首,占据了300s钟的大头!
找原因
Tomcat的SessionID是通过SHA1PRNG算法计算得到的,SHA1算法需要一个密钥,这个密钥在Tomcat启动的时候随机生成一个,生成是使用了Linux随机函数生成器/dev/random。读取它相当于生成随机数字。/dev/random会根据 噪音 产生随机数,如果噪音不够它就会阻塞。Linux是通过I/O,键盘终端、内存使用量、CPU利用率等方式来收集

本文记录了解决Tomcat在Linux环境下部署缓慢的问题。通过分析日志发现SessionID生成过程消耗大量时间,进一步研究发现是由Linux随机数生成器引起的。通过安装并配置rng-tools服务显著提升了Tomcat启动速度。
最低0.47元/天 解锁文章
2429





