linux熵池耗盡霎肯,導(dǎo)致oracle數(shù)據(jù)庫連接失敗

linux熵池耗盡含潘,導(dǎo)致oracle數(shù)據(jù)庫連接失敗

今天接到某業(yè)務(wù)開發(fā)人員的報錯信息:


1.png

隨后又接到應(yīng)用運維人員的報錯信息:


2.png

連接失敗狠持,errorCode 17002, state 08006
兩位同學(xué)的反饋合是,問題都指向數(shù)據(jù)庫,應(yīng)用無法連接數(shù)據(jù)庫。
趕緊檢查數(shù)據(jù)庫狀態(tài)……
結(jié)果:
數(shù)據(jù)庫監(jiān)聽正常
集群狀態(tài)正常
數(shù)據(jù)庫日志沒有報錯
會話遠(yuǎn)沒達(dá)到配置上線
數(shù)據(jù)庫沒有死鎖
系統(tǒng)資源都比較空閑届垫,沒有壓力
數(shù)據(jù)庫一切正常……

根據(jù)錯誤代碼全释,進(jìn)行查詢装处,發(fā)現(xiàn)可能是linux系統(tǒng)熵池不夠,導(dǎo)致連接無法建立浸船,原因是oracle 11g JDBC在建立連接時需要大約40個字節(jié)隨機(jī)數(shù)據(jù)來加密session token之類的連接字符串妄迁,而這個隨機(jī)數(shù)據(jù)源默認(rèn)用的是/dev/random,通過搜集鍵盤李命,鼠標(biāo)登淘,中斷,磁盤操作來產(chǎn)生隨機(jī)數(shù)據(jù)封字,可以通過以下命令查看當(dāng)前的熵值:

cat /proc/sys/kernel/random/entropy_avail

結(jié)果發(fā)現(xiàn)黔州,熵值最低時為100多,最高時只有300多阔籽。


3.png

熵池上限大小

cat /proc/sys/kernel/random/poolsize
4096

明顯熵池不夠流妻,我們有以下幾種解決方法:
1)把隨機(jī)源由/dev/random修改為/dev/urandom,即在執(zhí)行java程序加入命令行參數(shù):

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

2)安裝一個提供熵的程序包

yum install haveged
service haveged start
chkconfig --level 2345 haveged  on
或
yum install rng-tools
service rngd start
chkconfig --level 2345 rngd  on

安裝后笆制,熵值飆升到3000多绅这,業(yè)務(wù)重啟后,連接數(shù)據(jù)恢復(fù)正常


4.png

那么在辆,究竟是什么程序頻繁消耗熵值呢君躺?
我們查看一下熵值隨時間的變化情況

cat /proc/sys/kernel/random/entropy_avail && date

發(fā)現(xiàn)每次在0秒時,下降比較大


55png.png

想起前段時間部署了oracle數(shù)據(jù)采集腳本开缎,使用python+cx_oracle連接數(shù)據(jù)庫棕叫,每分鐘執(zhí)行一次。

linux熵池原理

Linux內(nèi)核采用熵來描述數(shù)據(jù)的隨機(jī)性奕删。熵(entropy)是描述系統(tǒng)混亂無序程度的物理量俺泣,一個系統(tǒng)的熵越大則說明該系統(tǒng)的有序性越差,即不確定性越大完残。在信息學(xué)中伏钠,熵被用來表征一個符號或系統(tǒng)的不確定性,熵越大谨设,表明系統(tǒng)所含有用信息量越少熟掂,不確定度越大。

計算機(jī)本身是可預(yù)測的系統(tǒng)扎拣,因此赴肚,用計算機(jī)算法不可能產(chǎn)生真正的隨機(jī)數(shù)素跺。但是機(jī)器的環(huán)境中充滿了各種各樣的噪聲,如硬件設(shè)備發(fā)生中斷的時間誉券,用戶點擊鼠標(biāo)的時間間隔等是完全隨機(jī)的指厌,事先無法預(yù)測。Linux內(nèi)核實現(xiàn)的隨機(jī)數(shù)產(chǎn)生器正是利用系統(tǒng)中的這些隨機(jī)噪聲來產(chǎn)生高質(zhì)量隨機(jī)數(shù)序列踊跟。

內(nèi)核維護(hù)了一個熵池用來收集來自設(shè)備驅(qū)動程序和其它來源的環(huán)境噪音踩验。理論上,熵池中的數(shù)據(jù)是完全隨機(jī)的商玫,可以實現(xiàn)產(chǎn)生真隨機(jī)數(shù)序列箕憾。為跟蹤熵池中數(shù)據(jù)的隨機(jī)性,內(nèi)核在將數(shù)據(jù)加入池的時候?qū)⒐浪銛?shù)據(jù)的隨機(jī)性拳昌,這個過程稱作熵估算袭异。熵估算值描述池中包含的隨機(jī)數(shù)位數(shù),其值越大表示池中數(shù)據(jù)的隨機(jī)性越好地回。

linux熵池與oracle數(shù)據(jù)庫的關(guān)系

默認(rèn)情況下扁远,Oracle JDBC 11g似乎會使用/dev/random俊鱼。而使用/dev/random生成隨機(jī)數(shù)時刻像,依賴熵池。如果熵池空了或不夠用并闲,對/dev/random的讀取就會堵塞细睡,直到熵池夠用為止。但是有文章中說帝火,urandom的隨機(jī)性弱于random(也有反對者)溜徙。

那怎么讓熵池增加呢?熵池小會有什么其他后果嗎犀填?

熵池本質(zhì)上是若干字節(jié)蠢壹。/proc/sys/kernel/random/entropy_avail 中存儲了熵池現(xiàn)在的大小,/proc/sys/kernel/random/poolsize是熵池的最大容量九巡,單位都是bit图贸。如果entropy_avail的值小于要產(chǎn)生的隨機(jī)數(shù)bit數(shù),那么/dev/random就會堵塞冕广。

熵池怎么增加疏日?

只有少數(shù)驅(qū)動程序會填充熵池,首先是鍵盤和鼠標(biāo)撒汉。
實際上是從各種noice source中獲取數(shù)據(jù)沟优,noice source可能是 鍵盤事件、鼠標(biāo)事件睬辐、設(shè)備時鐘中等挠阁。
linux內(nèi)核從2.4升級到2.6時宾肺,處于安全性的考慮,廢棄了一些source鹃唯。source減少了爱榕,熵池補(bǔ)給的速度當(dāng)然也變慢,進(jìn)而不夠用坡慌。
具體方法參考文中前半部分

熵斥堵塞會有什么后果黔酥?

其實,通過消耗熵池洪橘,可以構(gòu)造DOS攻擊跪者。原理很簡單,熵池空了熄求,依賴隨機(jī)數(shù)的業(yè)務(wù)(SSL渣玲,加密等)就不能正常進(jìn)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弟晚,一起剝皮案震驚了整個濱河市忘衍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卿城,老刑警劉巖枚钓,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瑟押,居然都是意外死亡搀捷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門多望,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫩舟,“玉大人,你說我怎么就攤上這事怀偷〖已幔” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵椎工,是天一觀的道長饭于。 經(jīng)常有香客問我,道長晋渺,這世上最難降的妖魔是什么镰绎? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮木西,結(jié)果婚禮上畴栖,老公的妹妹穿的比我還像新娘。我一直安慰自己八千,他們只是感情好吗讶,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布燎猛。 她就那樣靜靜地躺著,像睡著了一般照皆。 火紅的嫁衣襯著肌膚如雪重绷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天膜毁,我揣著相機(jī)與錄音昭卓,去河邊找鬼。 笑死瘟滨,一個胖子當(dāng)著我的面吹牛候醒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杂瘸,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼倒淫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了败玉?” 一聲冷哼從身側(cè)響起敌土,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎运翼,沒想到半個月后返干,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡南蹂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年犬金,在試婚紗的時候發(fā)現(xiàn)自己被綠了念恍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片六剥。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖峰伙,靈堂內(nèi)的尸體忽然破棺而出疗疟,到底是詐尸還是另有隱情,我是刑警寧澤瞳氓,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布策彤,位于F島的核電站,受9級特大地震影響匣摘,放射性物質(zhì)發(fā)生泄漏店诗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一音榜、第九天 我趴在偏房一處隱蔽的房頂上張望庞瘸。 院中可真熱鬧,春花似錦赠叼、人聲如沸擦囊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞬场。三九已至买鸽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贯被,已是汗流浹背眼五。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留彤灶,地道東北人弹砚。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像枢希,于是被迫代替她去往敵國和親桌吃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容