资讯专栏INFORMATION COLUMN

Swap使用过高处理

IT那活儿 / 3127人阅读
Swap使用过高处理

点击上方“IT那活儿”,关注后了解更多精彩内容!!

近期,巡检平台主机发现,生产有一台主机Swap使用很高,一看内存使用率高,基本耗尽。
于是查了下资料:
Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
这样,系统总是在物理内存不够时,才进行Swap交换
Swap分区在什么时候会使用,是受参数swappiness来控制的。这个参数值可为 0-100,控制系统 swap 的使用程度。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为 60。这只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法。
通常,Swap使用过高的处理方法主要有:
1.扩物理内存;
2.调整swappiness参数;
3.扩Swap。
查看发现,我们的swappiness设置的是10,也就是说当物理内存大约剩余10%时,就会使用Swap分区,所以说没有什么调整空间了,当然调成0也可以。
这里我们采用的是扩物理内存的方法。
于是我们联系主机机侧扩容,扩容后物理内存可用20多G,但是Swap不会释放。
这时候,就想知道是哪些程序使用了Swap,于是通过脚本查询出使用Swap的top10进程。
for i in $( cd /proc;ls |grep "^[0-9]"|awk  $0 >100) ;do 
awk /Swap:/{a=a+$2}END{print "$i",a/1024"M"} 
/proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10
发现是43286这个进程占用了427M Swap,决定对该进程进行重启。
Ps -ef|grep 43286,查看是nexus程序:
于是重启:
重启后,Swap释放了427M。
于是将其他进程重启后,Swap完全释放。


本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129688.html

相关文章

  • mysql优化

    摘要:显示处于不可中断的休眠的进程数量。在等待显示被交换到磁盘的数据块的数量。服务器硬件优化物理状态灯自带管理设备远程控制卡设备,开关机硬件监控。 数据库层面问题解决思路 一般应急调优的思路:针对突然的业务办理卡顿,无法进行正常的业务处理!需要立马解决的场景! 1、show processlist 2、explain select id ,name from stu where name=...

    elisa.yang 评论0 收藏0
  • 【VisualVM 简明教程】(4): 分析CPU

    摘要:快照,带线程命令,是显示全部进程,是显示线程,全格式输出显示进程树,不加显示所有实时快照推荐程度按数字从小到大。 有时候好好的程序放到生产服务器上一段时间后,就会发现服务器响应缓慢,进而进一步发现是cpu过高,于是就慌了,造成cpu过高的原因很多,不过大多是由于资源吃紧造成,例如:sql执行过慢,程序里存在死循环,数据库连接未释放,网络阻塞导致的第三方框架代码出现死循环,大量的操作导致...

    ormsf 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<