记一种简单到容易被忽视的linux负载高的解决方案

MagicQ 3月前 125

机器CPU Load是一个很直观体现机器状态的指标,但也不是所有应用在会体现在Load高,也不是Load数值大就代表肯定有问题。

获取Load,基本的top命令就可以,在右侧会有1、 5、 15分钟的平均值,最简单的理解方式就是有等待CPU处理的任务的数量,数值越大说明机器负载越高,一般取CPU core*0.75 作为安全线,超core数的2倍会存在隐患。

日前发现一个现象,Load超过core数的25倍,如下图:

检查占CPU的进程为kswapd0

kswapd0为何物?它是管理虚拟内存的,当物理内存不足的时候kswapd0会拿虚拟内存过来凑数,但是像我这个AWS主机,天生就不给配swap空间的,就会导致CPU load特别高

解决方案:

#先做一个空文件,下面的命令会在根目录下生成一个1G的名为swap的文件
dd if=/dev/zero of=/swap bs=1024k count=1024
#接下来把文件格式化一下并改一下权限
mkswap /swap;chmod 0600 /swap
#然后load一下就好了
swapon /swap

完事后,load就可以降下来了,像我这还是超过core数的4倍,但没关系,因为我机器跑的服务的关系,30以内都属于正常,超过50是在是机器卡顿的不在接受范围内了。


 注:swap有用吗?有,但仅限内存不足以满足自己业务需求的情况下有用,无论是用当前业务磁盘划分分区也好、创建文件也罢,都会占用磁盘I/O,如果发现SWAP长期有一个大的使用率,那就急需扩容内存,而不是觉的没事

最新回复 (0)
    • 运维开源项目互助社区—致敬开源
      2
        立即登录 立即注册 
返回