最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tomcat 啟動(dòng)時(shí) SecureRandom 非常慢解決辦法

 更新時(shí)間:2017年06月25日 15:14:12   作者:張松然  
這篇文章主要介紹了Tomcat 啟動(dòng)時(shí) SecureRandom 非常慢解決辦法的相關(guān)資料,需要的朋友可以參考下

Tomcat 啟動(dòng)時(shí) SecureRandom 非常慢解決辦法

最近使用阿里云的 Ubuntu 16.04 ESC 服務(wù)器運(yùn)行 Tomcat 時(shí)發(fā)現(xiàn),Tomcat 啟動(dòng)的特別慢,通過查看日志,發(fā)現(xiàn)時(shí)間主要花在實(shí)例化 SecureRandom 對(duì)象上了。

由該日志可以看出,實(shí)例化該對(duì)象使用了253秒,導(dǎo)致整個(gè)應(yīng)用啟動(dòng)了275秒之久。

注意這條日志:

org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of 
SecureRandom instance for session ID generation using [SHA1PRNG] took [253,251] milliseconds.

根本原因是 SecureRandom 這個(gè) jre 的工具類的問題。那為什么 SecureRandom generateSeed 這么慢,甚至掛在 Linux 操作系統(tǒng)呢?

Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 類產(chǎn)生安全隨機(jī)類 SecureRandom 的實(shí)例作為會(huì)話 ID。

Tomcat 使用 SHA1PRNG 算法是基于 SHA-1 算法實(shí)現(xiàn)且保密性較強(qiáng)的偽隨機(jī)數(shù)生成器。

在 SHA1PRNG 中,有一個(gè)種子產(chǎn)生器,它根據(jù)配置執(zhí)行各種操作。

Linux 中的隨機(jī)數(shù)可以從兩個(gè)特殊的文件中產(chǎn)生,一個(gè)是 /dev/urandom,另外一個(gè)是 /dev/random。他們產(chǎn)生隨機(jī)數(shù)的原理是利用當(dāng)前系統(tǒng)的熵池來計(jì)算出固定一定數(shù)量的隨機(jī)比特,然后將這些比特作為字節(jié)流返回。熵池就是當(dāng)前系統(tǒng)的環(huán)境噪音,熵指的是一個(gè)系統(tǒng)的混亂程度,系統(tǒng)噪音可以通過很多參數(shù)來評(píng)估,如內(nèi)存的使用,文件的使用量,不同類型的進(jìn)程數(shù)量等等。如果當(dāng)前環(huán)境噪音變化的不是很劇烈或者當(dāng)前環(huán)境噪音很小,比如剛開機(jī)的時(shí)候,而當(dāng)前需要大量的隨機(jī)比特,這時(shí)產(chǎn)生的隨機(jī)數(shù)的隨機(jī)效果就不是很好了。

這就是為什么會(huì)有 /dev/urandom 和 /dev/random 這兩種不同的文件,后者在不能產(chǎn)生新的隨機(jī)數(shù)時(shí)會(huì)阻塞程序,而前者不會(huì)(ublock),當(dāng)然產(chǎn)生的隨機(jī)數(shù)效果就不太好了,這對(duì)加密解密這樣的應(yīng)用來說就不是一種很好的選擇。/dev/random 會(huì)阻塞當(dāng)前的程序,直到根據(jù)熵池產(chǎn)生新的隨機(jī)字節(jié)之后才返回,所以使用 /dev/random 比使用 /dev/urandom 產(chǎn)生大量隨機(jī)數(shù)的速度要慢。

SecureRandom generateSeed  使用 /dev/random 生成種子。但是 /dev/random 是一個(gè)阻塞數(shù)字生成器,如果它沒有足夠的隨機(jī)數(shù)據(jù)提供,它就一直等,這迫使 JVM 等待。鍵盤和鼠標(biāo)輸入以及磁盤活動(dòng)可以產(chǎn)生所需的隨機(jī)性或熵。但在一個(gè)服務(wù)器缺乏這樣的活動(dòng),可能會(huì)出現(xiàn)問題。

有2種解決方案:

1. 在Tomcat環(huán)境中解決:

可以通過配置 JRE 使用非阻塞的 Entropy Source:

在 catalina.sh 中加入這么一行:-Djava.security.egd=file:/dev/./urandom 即可。

2. 在 JVM 環(huán)境中解決:

打開 $JAVA_PATH/jre/lib/security/java.security 這個(gè)文件,找到下面的內(nèi)容:

securerandom.source=file:/dev/random

替換成:

securerandom.source=file:/dev/./urandom

這里值為何要在 dev 和 random 之間加一個(gè)點(diǎn)呢?是因?yàn)橐粋€(gè) JDK 的 bug,有人反饋即使對(duì) securerandom.source 設(shè)置為 /dev/urandom 它也仍然使用的 /dev/random,有人提供了變通的解決方法,其中一個(gè)變通的做法是對(duì) securerandom.source 設(shè)置為 /dev/./urandom 才行。也有人評(píng)論說這個(gè)不是 bug,是有意為之。

在 JDK 7 的 java.security 文件里,配置里的是:

# Select the source of seed data for SecureRandom. By default an
# attempt is made to use the entropy gathering device specified by
# the securerandom.source property. If an exception occurs when
# accessing the URL then the traditional system/thread activity
# algorithm is used.
#
# On Solaris and Linux systems, if file:/dev/urandom is specified and it
# exists, a special SecureRandom implementation is activated by default.
# This "NativePRNG" reads random bytes directly from /dev/urandom.
#
# On Windows systems, the URLs file:/dev/random and file:/dev/urandom
# enables use of the Microsoft CryptoAPI seed functionality.
#
securerandom.source=file:/dev/urandom

但這個(gè) /dev/urandom 也同那個(gè) bug 報(bào)告里所說的等同于 /dev/random;要使用非阻塞的熵池,這里還是要修改為 /dev/./urandom。經(jīng)測(cè)試,貌似 JDK 7 并沒有同注釋里的意思修復(fù)了這個(gè)問題。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 詳解關(guān)于tomcat切割catalina.out日志的三種方式

    詳解關(guān)于tomcat切割catalina.out日志的三種方式

    這篇文章主要介紹了詳解關(guān)于tomcat切割catalina.out日志的三種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • Tomcat中使用ipv6地址的示例代碼

    Tomcat中使用ipv6地址的示例代碼

    在公司的一次項(xiàng)目改造過程中,需要將原來的IPV6替換成IPV4,本文就詳細(xì)的介紹Tomcat中使用ipv6地址的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-05-05
  • 通過prometheus監(jiān)控Tomcat運(yùn)行狀態(tài)的操作流程

    通過prometheus監(jiān)控Tomcat運(yùn)行狀態(tài)的操作流程

    文章介紹了如何安裝和配置Tomcat,并使用Prometheus和Tomcat Exporter來監(jiān)控Tomcat的運(yùn)行狀態(tài),文章詳細(xì)講解了Tomcat的常用指標(biāo),如連接、請(qǐng)求、會(huì)話和線程指標(biāo),并提供了具體的計(jì)算方法和示例,需要的朋友可以參考下
    2025-02-02
  • 關(guān)于tomcat點(diǎn)擊startup.bat后閃退問題的解決辦法

    關(guān)于tomcat點(diǎn)擊startup.bat后閃退問題的解決辦法

    這篇文章給大家分享了關(guān)于tomcat點(diǎn)擊startup.bat后閃退問題分析及解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-01-01
  • 修改Tomcat默認(rèn)訪問根目錄的方法

    修改Tomcat默認(rèn)訪問根目錄的方法

    這篇文章主要介紹了修改Tomcat默認(rèn)訪問根目錄的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • tomcat配置https的方法示例

    tomcat配置https的方法示例

    這篇文章主要介紹了tomcat配置https的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 解決tomcat部署下的web項(xiàng)目網(wǎng)頁更改不能自動(dòng)刷新的問題

    解決tomcat部署下的web項(xiàng)目網(wǎng)頁更改不能自動(dòng)刷新的問題

    下面小編就為大家?guī)硪黄鉀Qtomcat部署下的web項(xiàng)目網(wǎng)頁更改不能自動(dòng)刷新的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 如何通過LambdaProbe實(shí)現(xiàn)監(jiān)控Tomcat

    如何通過LambdaProbe實(shí)現(xiàn)監(jiān)控Tomcat

    這篇文章主要介紹了如何通過LambdaProbe實(shí)現(xiàn)監(jiān)控Tomcat,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • tomcat性能優(yōu)化之如何搭建Apr模塊

    tomcat性能優(yōu)化之如何搭建Apr模塊

    這篇文章主要介紹了tomcat性能優(yōu)化之如何搭建Apr模塊,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Tomcat無法映射到activiti-app導(dǎo)致activiti無法啟動(dòng)頁面的解決方法

    Tomcat無法映射到activiti-app導(dǎo)致activiti無法啟動(dòng)頁面的解決方法

    這篇文章主要介紹了Tomcat無法映射到activiti-app導(dǎo)致activiti無法啟動(dòng)頁面的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

青铜峡市| 保靖县| 璧山县| 涿州市| 博湖县| 诸城市| 镶黄旗| 屯门区| 河曲县| 屯留县| 奇台县| 西平县| 长武县| 崇礼县| 普兰店市| 平陆县| 登封市| 洛扎县| 平果县| 融水| 乌鲁木齐县| 岚皋县| 十堰市| 大兴区| 克什克腾旗| 乌拉特中旗| 田林县| 射阳县| 柳江县| 临颍县| 江孜县| 伽师县| 山阴县| 邹平县| 游戏| 宜章县| 安新县| 墨玉县| 定远县| 开阳县| 英吉沙县|