在阿里雲上啓動tomcat一直卡在Root WebApplicationContext: initialization completed in 2520 ms,每次要等很久纔會啓動項目 ,等待時間那叫一個長啊
參考了文章:
http://www.bubuko.com/infodetail-2557959.html
https://blog.csdn.net/wwdwjm/article/details/77840113
主要是因爲阿里雲的熵池太小,熵池的大小是根據鍵盤、鼠標之類的噪音產生的數,然後/dev/random會根據熵池來生成隨機數。而生成需要有足夠的熵池裏的噪音數,如果沒有達到的話就會一直阻塞。
tomcat啓動的時候爲了生成session id就會獲取這個隨機數來生成密匙,所以纔出現上面的情況,一直阻塞在等待熵池裏的數滿足生成隨機數的大小,熵池裏的數夠大了纔開始部署,所以我們可以使用rngd來增大熵池,因爲容器的熵池都是共享宿主機的,所以只要增大宿主機的熵池就可以了,在容器內是沒辦法通過rngd修改熵池的因爲沒有權限修改宿主機的東西,只能通過上面鏈接裏提到的修改jre或者tomcat的方法。
我這裏用的Centos7操作系統
安裝rngd服務(熵服務)
yum install -y rng-tools
啓動服務
systemctl start rngd
拷貝
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system
編輯/etc/systemd/system/rngd.service
ExecStart=/sbin/rngd -f -r /dev/urandom
即在ExecStart後面加上-r /dev/urandom
重新載入服務
systemctl daemon-reload
重啓服務
systemctl restart rngd
ok,搞定,再重啓tomcat就很快了