mysql hugepage_因未配置Hugepage会话数添增悲剧案例
今天一朋友反饋他們的一個數(shù)據(jù)庫hang住了,通過ssh也不能登錄系統(tǒng),他們沒有辦法重啟系統(tǒng)解決問題,現(xiàn)在想讓我?guī)兔φ页鰡栴}原因
分析awr得出
詢問朋友,他們的庫一般session保持在200個左右,這次突然飆升到750以上,屬于異常情況
分析監(jiān)聽日志
看到在截圖的時間內,整體訪問較頻繁,某個ip訪問異常頻繁,通過這些信息,初步懷疑是用戶的數(shù)據(jù)庫內存使用完,導致系統(tǒng)數(shù)據(jù)庫hang住.
查看系統(tǒng)日志
Jun 26 14:35:55 result01 kernel: [5613531.566617] Free swap = 0kB
Jun 26 14:35:55 result01 kernel: [5613531.566618] Total swap = 2104504kB
Jun 26 14:35:55 result01 kernel: [5613531.566620] Free swap: 0kB
Jun 26 14:35:55 result01 kernel: [5613531.591073] 2359296 pages of RAM
Jun 26 14:35:55 result01 kernel: [5613531.591074] 318236 reserved pages
Jun 26 14:35:55 result01 kernel: [5613531.591075] 73353 pages shared
Jun 26 14:35:56 result01 kernel: [5613531.591076] 529 pages swap cached
Jun 26 14:35:56 result01 kernel: [5613531.591079] Out of Memory: Kill process 8904 (oracle) score 891 and children.
Jun 26 14:35:56 result01 kernel: [5613531.591201] Out of memory: Killed process 8904 (oracle).
Jun 26 14:35:56 result01 kernel: [5613531.592280] oracle invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
通過這個日志看出系統(tǒng)內存和交換分區(qū)都使用完,因為內存不夠,系統(tǒng)開始kill掉部分oracle進程.通過這些確定是系統(tǒng)內存使用完導致hang住可以理解.
分析hang住原因
為什么session意外的從200添增到750的時候,系統(tǒng)內存被使用完
cat /proc/meminfo
MemTotal: 8164240 kB
SwapTotal: 2104504 kB
PageTables: 69732 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
sga_target=3674210304
pga_aggregate_target=1732247552
從這里得出幾個信息:
1.數(shù)據(jù)庫總內存8g,swap配置2g
2.數(shù)據(jù)庫未使用Hugepage
3.數(shù)據(jù)庫設置sga和pga信息
內存參數(shù)估算
數(shù)據(jù)庫總計占用內存為:(3674210304+1732247552)/1024/1024=5156M(pga可能未使用完,也可能超過)
結合實際sga_target=3674210304,會話數(shù).
保守估計下Oracle進程占用的系統(tǒng)內存3674210304/(4*1024)*1.5*750/1024/1024=960M
估算如果使用Hugepage Oracle進程占用系統(tǒng)內存為:3674210304/(2*1024*1024)*1.5*750/1024/1024=1.9M
通過這里分析Oracle總占用內存為:5156+960=6116M
通過保守計算留給系統(tǒng)的內存大概為:1.8G左右
因為系統(tǒng)的其他操作,最終導致該系統(tǒng)內存耗完,系統(tǒng)和數(shù)據(jù)庫hang住
總結說明
這是一個實實在在因為linux中因為未配置Hugepage,因為用戶突增,導致系統(tǒng)內存消耗光,從而使得系統(tǒng)和數(shù)據(jù)庫hang住的例子.
這個庫因為sga不是非常大,所以Oracle占用系統(tǒng)內存不是高到離譜,如果sga配置為32g,1000個session,那就會占用12g的系統(tǒng)內存
通過這些可以看出在linux中配置Hugepage的優(yōu)點:Hugepage不光是為了減輕cpu的負擔,還可以減少系統(tǒng)內存的消耗;在沒有極端的情況下,建議linux的數(shù)據(jù)庫系統(tǒng)配置Hugepage.
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的mysql hugepage_因未配置Hugepage会话数添增悲剧案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++重载流插入运算符与流提取运算符
- 下一篇: mysql联合索引like_MySQL全