Swap引起的CPU飙升至90+。
现象:应用响应速度很慢,以及最直接的影响服务器无法通过SSH连接、SSH连接时响应速度很慢
排查
通过top查看进程信息
image.png image.png通过监控进程信息,大概能分析出:
因java应用程序占用CPU以及内存耗费较高,触发kswadp0进程(管理linux管理内存的进程)因该进程优先级较高,且占用极高得CPU资源,WEB程序故无法得到响应,同时无法通过CRT远程连接上服务器,通过阿里云网页版的远程连接,可连接上,但卡顿无法执行其他操作。
kswapd0是什么?
kswapd0进程的作用:它是虚拟内存管理中,负责换页的,操作系统每过一定时间就会唤醒kswapd ,看看内存是否紧张,如果不紧张,则睡眠,在 kswapd 中,有2 个阀值,pages_hige 和 pages_low,当空闲内存页的数量低于 pages_low的时候,kswapd进程就会扫描内存并且每次释放出32 个free pages,直到 free page 的数量到达pages_high。
physical mem 不足,引起 swap 频繁读写。
kswapd0 是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒 kswapd0 进程,由 kswapd0 分配磁盘交换空间作缓存,因而占用大量的 CPU 资源。
查看内存及swap使用率:发现还有空余的内存,但是已经开始用swap了。
处置方式
调整内存参数,当内存使用率不足10%(开始是默认值60)时在使用swap,尽量避免使用swap,减少唤醒软中断进程,从而降低ksoftirqd进程对cpu的占用。
先查看:
sysctl vm.swappiness
默认应该查看到 vm.swappiness = 0 ;
设置虚拟内存不足10%时才调用
sysctl vm.swappiness = 10
备注:个人博客同步至简书。
网友评论