人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

快速解決Tomcat啟動慢的問題,超簡單

發(fā)布日期:2022-01-15 14:35 | 文章來源:CSDN

今天在幫一位同學解決了一個問題——Tomcat啟動超級慢,大概五六分鐘。解決之后,只需要3秒鐘即可啟動。

問題怎么解決呢?

在Tomcat的bin目錄下找到catalina.sh,然后打開它,在以下位置添加一行代碼:

-Djava.security.egd=file:/dev/urandom

2019年02月12日補充:很多朋友想知道原理,我就簡單說明一下。

Tomcat 7和Tomcat 8在啟動的時候會調(diào)用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom來產(chǎn)生一串安全隨機數(shù)。

在Linux(CentOS)環(huán)境下,隨機數(shù)可以從兩個特殊的文件中產(chǎn)生,一個是/dev/urandom,另外一個是/dev/random。

它們產(chǎn)生隨機數(shù)的原理是利用當前系統(tǒng)的熵池來計算出固定一定數(shù)量的隨機比特,然后將這些比特作為字節(jié)流返回。熵池就是當前系統(tǒng)的環(huán)境噪音,熵指的是一個系統(tǒng)的混亂程度,系統(tǒng)噪音可以通過很多參數(shù)來評估,如內(nèi)存的使用,文件的使用量,不同類型的進程數(shù)量等等。

/dev/random在不能產(chǎn)生新的隨機數(shù)時會阻塞程序,直到根據(jù)熵池產(chǎn)生新的隨機字節(jié)之后才返回;而/dev/urandom不會(ublock),當然,產(chǎn)生的隨機數(shù)效果也不太好。

所以我們強制Tomcat使用/dev/urandom而不是/dev/random來產(chǎn)生隨機數(shù),速度就會大幅提升——由好幾分鐘到只有幾秒鐘。

補充知識:Tomcat 啟動很慢,且日志上無任何錯誤的解決方案

1.問題

有一次把項目部署上去阿里云的時候,項目沒有問題,但是啟動tomcat的時候,啟動到一半,半天才有反應(yīng),才執(zhí)行完tomcat的啟動進程。

Tomcat 啟動很慢,且日志上無任何錯誤,在日志中查看到如下信息:

Log4j:[2015-10-29 15:47:11] INFO ReadProperty:172 - Loading properties file from class path resource [resources/jdbc.properties]

Log4j:[2015-10-29 15:47:11] INFO ReadProperty:172 - Loading properties file from class path resource [resources/common.properties]

29-Oct-2015 15:52:53.587 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for se

2.原因

Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom類產(chǎn)生安全隨機類SecureRandom的實例作為會話ID,這里花去了342秒,也即接近6分鐘。SHA1PRNG算法是基于SHA-1算法實現(xiàn)且保密性較強的偽隨機數(shù)生成器。在SHA1PRNG中,有一個種子產(chǎn)生器,它根據(jù)配置執(zhí)行各種操作。

1)如果Java.security.egd屬性或securerandom.source屬性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM會使用本地種子產(chǎn)生器NativeSeedGenerator,它會調(diào)用super()方法,即調(diào)用SeedGenerator.URLSeedGenerator(/dev/random)方法進行初始化。

2)如果java.security.egd屬性或securerandom.source屬性指定的是其它已存在的URL,那么會調(diào)用SeedGenerator.URLSeedGenerator(url)方法進行初始化。

這就是為什么我們設(shè)置值為”file:///dev/urandom”或者值為”file:/./dev/random”都會起作用的原因。

在這個實現(xiàn)中,產(chǎn)生器會評估熵池(entropy pool)中的噪聲數(shù)量。隨機數(shù)是從熵池中進行創(chuàng)建的。當讀操作時,/dev/random設(shè)備會只返回熵池中噪聲的隨機字節(jié)。/dev/random非常適合那些需要非常高質(zhì)量隨機性的場景,比如一次性的支付或生成密鑰的場景。

當熵池為空時,來自/dev/random的讀操作將被阻塞,直到熵池收集到足夠的環(huán)境噪聲數(shù)據(jù)。這么做的目的是成為一個密碼安全的偽隨機數(shù)發(fā)生器,熵池要有盡可能大的輸出。對于生成高質(zhì)量的加密密鑰或者是需要長期保護的場景,一定要這么做。

3.解決方案

有兩種解決辦法:

1)在TOMCAT環(huán)境中解決

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

在catalina.sh中加入這么一行:

-Djava.security.egd=file:/dev/./urandom

即可。

加入后再啟動Tomcat,整個啟動耗時下降到Server startup in 2912 ms。

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

打開$JAVA_PATH/jre/lib/security/java.security這個文件。

可以通過在vi命令進行查找:

?securerandom.source

找到下面的內(nèi)容:

securerandom.source=file:/dev/random

然后替換成:

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

以上這篇快速解決Tomcat啟動慢的問題,超簡單就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持本站。

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部