热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swap耗尽导致的系统故障

有些事情不能多念叨,老白前几天发了两篇关于HUGEPAGE的文章,10月30号,一个朋友

有些事情不能多念叨,老白前几天发了两篇关于HUGEPAGE的文章,10月30号,一个朋友的数据库就出问题了。这是一个刚刚上线的新系统,用户把oracle数据库迁移到了VMWARE的虚拟机上,刚刚上线第一天就出现了问题。
当时观察到的现象是SWAP都耗尽了,SYS CPU很高,系统几乎Hang死,登录操作系统都无法完成,只能关电处置。从ALERT LOG上看,10点15分左右的时候出现了系统严重换页:

然后系统就经常出现网络连接报错了。为了确认是不是SWAP耗尽,可以检查该时间点的messages日志:

从中可以看出确实free swap = 0kB,SWAP耗尽了。为什么SWAP会耗尽呢?从上面的信息可以看出,当时是没有配置hugepage的:

而这个系统中的会话数是多少呢?从awr报告中可以看出:

这个系统当时的会话数十分高,达到2000多个。这个系统是一台虚拟机,有128G内存,其中

SGA使用了不到60G,按理说内存是应该够用的。因为没有使用HUGEPAGE,导致了大量的内存被PAGETABLE使用,所以导致了内存耗尽。同时这个系统的VM参数swapiness使用了缺省值100,因此CACHE/BUFFER会占用部分内存。因此要优化这个系统的思路还是很清晰的,调整下面的参数,启用HUGEPAGE就可以了。

重启后系统一切恢复正常。通过检查meminfo文件:

/proc/meminfo 

MemTotal:       131758716 kB

MemFree:        24927812 kB

MemAvailable:   52118112 kB

Buffers:           28884 kB

Cached:         28436296 kB

SwapCached:            0 kB

Active:         13958424 kB

Inactive:       18295280 kB

Active(anon):    3848916 kB

Inactive(anon):     4560 kB

Active(file):   10109508 kB

Inactive(file): 18290720 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:       4194300 kB

SwapFree:        4194300 kB

Dirty:               484 kB

Writeback:             0 kB

AnonPages:       3847020 kB

Mapped:           170540 kB

Shmem:              4764 kB

Slab:             415324 kB

SReclaimable:     201516 kB

SUnreclaim:       213808 kB

KernelStack:       26592 kB

PageTables:       375072 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:    33373496 kB

Committed_AS:    8963948 kB

VmallocTotal:   34359738367 kB

VmallocUsed:      384416 kB

VmallocChunk:   34359310332 kB

HardwareCorrupted:     0 kB

AnonHugePages:         0 kB

CmaTotal:          16384 kB

CmaFree:           12664 kB

HugePages_Total:   35840

HugePages_Free:    20943

HugePages_Rsvd:    15824

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:       20288 kB

DirectMap2M:     3125248 kB

DirectMap1G:    133169152 kB

可以看出,HUGEPAGE已经起作用了。此时PAGETABLE也仅仅使用了不到400M,FREE内存也有24G+,可用内存52G+,系统暂时安全了。不过这个系统还存在一个隐患,就是SWAP只配置了4G,还是存在一定的隐患。为了防止类似问题的发生,还是需要把这个系统的SWAP加大一些。


推荐阅读
author-avatar
_忘却的思念_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有