随着时代的发展,电脑的内存也是越来越大。但是,我们在使用linux时,大家会发现即使内存大,还是会出现linux内存占用过高的情况?这是是什么原因导致的呢?我们应该如何处理呢?下面小编就带大家来看看我们如何正确的解决。
对于linux系统内存保持高使用率,对我们的系统稳定性和业务运行会造成影响,大家通过以下的方法来进行查找问题所在以及处理方法:
1、定位问题,找到影响cpu使用率过高的具体进程。
2、分析处理,影响cpu使用率过高的进程是否正常,再进行处理。
正常进程:对程序进行优化或是升级服务器配置。
异常进程:手动对进程进行查杀,也能用第三方安全工具进行查杀。
查看cpu负载的常用命令如下,这里主要介绍vmstat和top常用命令的使用:
1、vmstat
2、top
3、ps-aux
4、ps-ef
通过vmstat命令,从系统维度查看cpu资源的使用情况:
命令如下,表示结果一秒刷新一次。
返回示例类似如下:
注意:返回结果的主要数据列说明如下。
1、r:表示系统中cpu等待处理的线程,一个cpu每次只能处理一个线程,数值越大说明系统运行越慢。
2、us:用户模式小号的cpu时间百分比,此值越高活命进程消耗的cpu时间比较多,如果此值超过50%,需要对程序算法和代码等进行优化。
3、sy:内核模式小号的cpu时间百分比。
4、wa:io等待消耗的cpu时间百分比,此值越高io等待越严重,可能磁盘大量作随机访问造成,也可能是磁盘性能出现了瓶颈。
5、id:空闲状态的cpu时间百分比,如果此值持续为0,同时sy是us的两倍,说明系统面临cpu组员短缺。
1、登录linux实例,关于如何登录linux实例,请参考使用管理终端连接linux实例。
2、执行命令如下,从进程维度来查看cpu、内存等资源的使用情况。
系统显示如下:
3、负载问题我们只需关注回显的第一行和第三行信息:
top命令的第一行显示内容17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05,依次代表系统当前时间、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载。
top命令的第三行显示当前cpu资源的总体使用情况,下方是显示各个进程的资源占用情况。
4、p键,可以对cpu使用率进行倒序排列,定位系统中占用cpu较高的进程。
注意:m键,可以对系统内存使用情况进行排序,如果有多核cpu,数字键1能显示每核cpu负载状况。
5、执行命令如下,可以查看每个进程id对应的程序文件。
使用top命令查看系统负载问题,定位消耗较多的cpu资源进程,从而快速终止相应的异常进程。
1、终止某个进程需要我们先写入小写字母k。
2、输入想要终止的进程pid,默认为输出结果的第一个pid。
如我们想要终止pid为23的进程,输入23后点击回车。
3、操作成功后,会显示类似send pid 23 signal [15/sigterm]的提示信息确认,回车即可确认。
当linux系统没有业务程序运行,通过top命令发现cpu占用率不高,但是load average却非常高:
解决方法:
load average是对cpu负载进行评估的,值越高则任务队列越长,等待执行的任务就越多。这种情况很可能是僵死进程导致的,我们通过ps-axjf命令查看是否存在d+状态进程,此状态是指不可能中断的睡眠状态。此状态无法终止也无法自行退出,只能通过恢复其依赖的资源或是重启系统来解决。
操作系统是分页来管理物理内存,一部分作为虚拟内存,由于内存的速度要比磁盘快得多,所以操作系统要按照某种换页制将不需要的页面换到磁盘中,把需要的页面调到内存中。内存持续不足,这个换页动作持续进行。kswapd0是虚拟内存管理负责换页的进程,服务器内存不足时kswapd0会执行换页操作,这样非常消耗主机cpu资源。要是通过top命令处于休眠状态,且运行时间长,可以初步判定低筒在持续的进行换页操作,可以把问题转向内存不足来排查。
问题:kswapd0进程占用了系统大量cpu资源
解决方法:
1、查看kswapd0进程,执行命令如下:
系统显示类似如下,kswapd0进程持续非睡眠状态,并且运行时间长,持续占用较高cpu资源,这是系统在持续的进行换页操作所致。
2、通过指令free、ps等进一步查询系统及系统内进程的内存占用情况,进一步的分析。
3、系统点前内存不足的话,大家重启一些服务,释放内存。
注意:长久考虑大家需要对内存大小进行升级。
总结:对于linux系统cpu负载的问题所在以及解决方法就讲解完了,希望对您有所帮助,我们下期再见!