现象:数据库服务器在周一到周五的八点半到九点期间,服务器负载很严重,cpu%达到100%,奇怪的是system%特别高,90%以上,整个系统卡住。过了九点后就慢慢恢复了。
从数据库的awr报告看,这个时间段没有特别的SQL语句。考虑到八点半到九点一般是系统使用者开始登录使用的时间,在服务器上安装perf工具。第二天早上用perf监控,看看操作系统到底在忙些什么。监控截图如下
从监控结果上能看到compacting_alloc函数占用cpu特别多。用关键词”compacting_alloc”百度一下。
结果:linux的新特性THP(Transparent hugepages)会导致system%过高
处理:关闭THP
- vi /etc/rc.local ,添加如下两行
- echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
- echo never > /sys/kernel/mm/redhat_transparent_hugepage/deflag
重启服务器。再监控,这个现象就没再出现