mysql hugepage_因未配置Hugepage会话数添增悲剧案例

今天一朋友反馈他们的一个数据库hang住了,通过ssh也不能登录系统,他们没有办法重启系统解决问题,现在想让我帮忙找出问题原因

分析awr得出

a809eda8ba982523ccf3d56ac575ea68.png

b19c6a0c81692a96f3d7bbca7defe675.png

询问朋友,他们的库一般session保持在200个左右,这次突然飙升到750以上,属于异常情况

分析监听日志

5e8bd4e6b80eebfd291e4fbcd998c92c.png

看到在截图的时间内,整体访问较频繁,某个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.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值