今天再部署服务的的时候,遇到一个问题, 项目在服务器部署了后, 每次项目启动的时候 访问要很长时间才会有数据响应,这个问题刚刚找了很长时间,刚开始以为是服务器的问题,因为项目部署到另外一台服务器上没出现这样的问题,因为公司的服务器用的是阿里云,而且这项目就是我一个人负责, 我问过公司的大神,都说没有遇见过这样的问题,然后找阿里云人工,他们也是没办法, 说可能是项目问题。
最后在日志上看到,每次项目启动的时候都会创建一个东西,这个东西就是
securerandom.source=file:/dev/random
securerandom.source=file:/dev/urandom
/dev/random 和 /dev/urandom 这两种不同的文件,前者在不产生随机数时会阻塞当前的程序, 直到生产新的随机数之后,才会有返回, /dev/random这种文件会残生大量的随机数,
这样自然而然就慢了。
这种解决的办法:
1.可以在Tomcat种解决Entropy Source
在 catalina.sh 中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
2.是直接改jdk里面的
打开 $JAVA_PATH/jre/lib/security/java.security 这个文件,找到下面的内容:
securerandom.source=file:/dev/random
替换成:
securerandom.source=file:/dev/./urandom,
然后重启服务。
这个如果服务器运行内存大的话, 可能没有这个问题,
当然还可能有别的原因,我这里是这个原因。