1、問題描述java
1. jar 包在未打包以前執行沒有問題linux
2.應用啓動慢,而且此問題是一個偶爾性質的,也就是時有時無,數據庫
3.數據庫鏈接數夠用併發
4.發生錯誤的該鏈接是一個新的鏈接,不是服務端關閉致使的問題oracle
2、問題緣由dom
在Linux操做系統中,有一個特殊的設備文件,能夠用做隨機數發生器或僞隨機數發生器。jvm
/dev/random性能
在讀取時,/dev/random設備會返回小於熵池噪聲總數的隨機字節。/dev/random可生成高隨機性的公鑰或一次性密碼本。若熵池空了,對/dev/random的讀操做將會被阻塞,直到從別的設備中收集到了足夠的環境噪聲爲止。操作系統
固然你也能夠設置成不堵塞,當你在open 的時候設置參數O_NONBLOCK, 可是當你read的時候,若是熵池空了,會返回-1.net
/dev/urandom
/dev/random的一個副本是/dev/urandom ("unlocked",非阻塞的隨機數發生器[4]),它會重複使用熵池中的數據以產生僞隨機數據。這表示對/dev/urandom的讀取操做不會產生阻塞,但其輸出的熵可能小於/dev/random的。它能夠做爲生成較低強度密碼的僞隨機數生成器,不建議用於生成高強度長期密碼。
3、問題解決
在JAVA中能夠經過兩種方式去設置指定的隨機數發生器
1. -Djava.security.egd=file:/dev/random或者 -Djava.security.egd=file:/dev/urandom
2. 修改配置文件java.security 在jvm_home\jre\lib\security
參數securerandom.source=file:/dev/urandom
/dev/random 是堵塞的,在讀取隨機數的時候,當熵池值爲空的時候會堵塞影響性能,尤爲是系統大併發的生成隨機數的時候,若是在隨機數要求不高的狀況下,能夠去讀取/dev/urandom
4、解決參考鏈接