mysql hugepage_因未配置Hugepage会话数添增悲剧案例
今天一朋友反饋他們的一個數據庫hang住了,通過ssh也不能登錄系統,他們沒有辦法重啟系統解決問題,現在想讓我幫忙找出問題原因
分析awr得出
詢問朋友,他們的庫一般session保持在200個左右,這次突然飆升到750以上,屬于異常情況
分析監聽日志
看到在截圖的時間內,整體訪問較頻繁,某個ip訪問異常頻繁,通過這些信息,初步懷疑是用戶的數據庫內存使用完,導致系統數據庫hang住.
查看系統日志
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
通過這個日志看出系統內存和交換分區都使用完,因為內存不夠,系統開始kill掉部分oracle進程.通過這些確定是系統內存使用完導致hang住可以理解.
分析hang住原因
為什么session意外的從200添增到750的時候,系統內存被使用完
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.數據庫總內存8g,swap配置2g
2.數據庫未使用Hugepage
3.數據庫設置sga和pga信息
內存參數估算
數據庫總計占用內存為:(3674210304+1732247552)/1024/1024=5156M(pga可能未使用完,也可能超過)
結合實際sga_target=3674210304,會話數.
保守估計下Oracle進程占用的系統內存3674210304/(4*1024)*1.5*750/1024/1024=960M
估算如果使用Hugepage Oracle進程占用系統內存為:3674210304/(2*1024*1024)*1.5*750/1024/1024=1.9M
通過這里分析Oracle總占用內存為:5156+960=6116M
通過保守計算留給系統的內存大概為:1.8G左右
因為系統的其他操作,最終導致該系統內存耗完,系統和數據庫hang住
總結說明
這是一個實實在在因為linux中因為未配置Hugepage,因為用戶突增,導致系統內存消耗光,從而使得系統和數據庫hang住的例子.
這個庫因為sga不是非常大,所以Oracle占用系統內存不是高到離譜,如果sga配置為32g,1000個session,那就會占用12g的系統內存
通過這些可以看出在linux中配置Hugepage的優點:Hugepage不光是為了減輕cpu的負擔,還可以減少系統內存的消耗;在沒有極端的情況下,建議linux的數據庫系統配置Hugepage.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql hugepage_因未配置Hugepage会话数添增悲剧案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++重载流插入运算符与流提取运算符
- 下一篇: mysql联合索引like_MySQL全