javascript
SpringBoot系列: SpringBoot 启动慢的问题
SpringBoot 應(yīng)用啟動(dòng)速度往往很快, 但在某些Linux 服務(wù)器上可能會(huì)很慢, 可能超過(guò)1分鐘, 有時(shí)候甚至啟動(dòng)不起來(lái).
下面過(guò)程耗時(shí)太長(zhǎng):
IdGeneratorBase: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [140,108] milliseconds.
原因是SpringBoot在生成Session Id時(shí)候會(huì)使用 SecureRandom 這個(gè)jre工具類, 以生成足夠安全的隨機(jī)數(shù). 最終會(huì)用到在Linux的 /dev/random 這個(gè)阻塞型數(shù)字生成器, 它的特點(diǎn)是使用鼠標(biāo)和鍵盤以及磁盤信息來(lái)產(chǎn)生熵, 但對(duì)于Linux 服務(wù)器, 鼠標(biāo)和鍵盤活動(dòng)可能會(huì)很少, 就有可能阻塞整個(gè)SpringBoot啟動(dòng).
解決辦法是, 替換 /dev/random 為 /dev/./urandom. 具體為:
方法一: 適合外置tomcat:
在tomcat 的 catalina.sh 中增加下面的 JAVA_OPTS:
-Djava.security.egd=file:/dev/./urandom
方法二: 適合外置或內(nèi)置tomcat:
修改 $JAVA_PATH/jre/lib/security/java.security 文件,
將 securerandom.source=file:/dev/random 替換為下面一行:
securerandom.source=file:/dev/./urandom
總結(jié)
以上是生活随笔為你收集整理的SpringBoot系列: SpringBoot 启动慢的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 业界 | 复杂出行场景下,滴滴如何将AI
- 下一篇: 03、Swagger2和Springmv