SpringBoot的项目在Eclipse中启动很快但是丢到centos服务器上启动很慢的问题处理

本文探讨了SpringBoot项目在服务器启动时速度明显慢于本地的问题,并详细解释了背后的原因,涉及到SHA1PRNG算法及Linux系统随机数生成机制。最后给出了通过调整随机数生成源来优化启动时间的方法。

项目使用的是springboot开发。

在本机启动,大概完成的时间是30S上下,但是在服务器上启动基本上要消耗400S以上。

查阅资料可得原因为。

SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。


在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。


Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候,而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。


这就是为什么会有/dev/urandom和/dev/random这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会(ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random会阻塞当前的程序,直到根据熵池产生新的随机字节之后才返回,所以使用/dev/random比使用/dev/urandom产生大量随机数的速度要慢。


 


 


解决办法:

在启动时增加参数 -Djava.security.egd=file:/dev/./urandom


即启动脚本文为 java -jar   -Djava.security.egd=file:/dev/./urandom  xxx.jar



原文地址:https://my.oschina.net/wangnian/blog/687914

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值