溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

springboot應(yīng)用基于k8s部署pod啟動緩慢排查的示例分析

發(fā)布時間:2021-11-19 16:54:28 來源:億速云 閱讀:915 作者:柒染 欄目:云計算

springboot應(yīng)用基于k8s部署pod啟動緩慢排查的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

在k8s集群中部署springboot 應(yīng)用,應(yīng)用啟動較慢,如圖:

springboot應(yīng)用基于k8s部署pod啟動緩慢排查的示例分析

如果基于kubelet log -f pod 查看日志時,日志打印同樣較慢

調(diào)試改動后:

springboot應(yīng)用基于k8s部署pod啟動緩慢排查的示例分析

Linux系統(tǒng)上的設(shè)備/dev/random和/dev/urandom是不同的。

/dev/random設(shè)備提供的不是偽隨機(jī)數(shù)據(jù),而是基于環(huán)境中的真實隨機(jī)因素(即背景噪聲作為熵源)的隨機(jī)數(shù)據(jù)。

所以,/dev/random不像設(shè)備/dev/urandom。后者是一個偽隨機(jī)數(shù)據(jù)生成器,能按照請求快速生成所需數(shù)量的數(shù)據(jù)。/dev/random能生成多少內(nèi)容由環(huán)境中的噪聲決定。數(shù)據(jù)不足時,/dev/random只能等待。

所以,在內(nèi)容不足時,/dev/random會將讀操作阻塞,直至收集到足夠的隨機(jī)數(shù)據(jù)。這就是測試結(jié)果差異產(chǎn)生的原因,/dev/random阻塞第二次的讀操作將近1分鐘時間。

所以,對于使用了/dev/random設(shè)備的而言,都有被阻塞的可能。被阻塞時,上層應(yīng)用可能表現(xiàn)為啟動慢或者執(zhí)行耗時不正常。因為/dev/random行為與環(huán)境背景有關(guān),行為隨機(jī)。所以也導(dǎo)致上層應(yīng)用因之引發(fā)的問題表現(xiàn)隨機(jī),不易排查。

比如,在Java社區(qū),/dev/random設(shè)備引致的問題早在jdk-1.4版本時就已經(jīng)有bug報告。但是還是有客戶不知道類似問題的致因和解決方案。

解決方案簡單說,就是除非有明確的理由,必須要使用/dev/random設(shè)備。否則,使用/dev/urandom設(shè)備即可。

對于jdk而言,需要的是把配置文件中$JAVA_HOME/jre/lib/security/java.security中的securerandom.source=file:/dev/random改為securerandom.source=file:/dev/urandom

排查建議

對于Java程序啟動慢,或者進(jìn)程耗時不正常,請優(yōu)先排查是不是/dev/random的問題。步驟如下

  1. 確認(rèn)是不是使用的是設(shè)備/dev/random。這只要檢查$JAVA_HOME/jre/lib/security/java.security對應(yīng)的配置就好。

  2. 如果是,則變更配置。

  3. 重啟Java程序確認(rèn)是否問題解決。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI