linux nfs load average 高怎么排查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux nfs load average 高怎么排查相关的知识,希望对你有一定的参考价值。
先在主机上通过top、free、ps、iostat 等常用工具分析了下主机的CPU、内存、IO使用情况,发现三者都不高。通过vmstat 1 查看的结果如下:context switches
从vmstat的输出结果来看,io项的block in 和block out 并不频繁。而system项的每称的中断数(in)、每秒的上下文切换(cs)特别频繁。这就造成load avaerage会特别高。大方向上的根因找到了,具体是哪个进程如何频繁的进行中断和上下文件的切换呢?
这里使用pidstat -w 1 (每秒刷新输出上下文切换情况),输出见下图:
context switches
从上图中可以看到有cswch(自愿的上下文切换)和nvcswch(非自愿的上下文切换)及对应的命令, 出vsftpd占用的文件交换比较多。可以看到这里显示的cs 值和总值还是有比较大的差距,由于主机上启动了不止一个vsftpd进程,而且pidstat 通过1秒刷新的时候并不会显示所有,通过pidstat -w执行几次收集所有发现所有的vsftpd进程占用的cs值叠加和vmstat里的比较相近了。
将结果通知业务人员后,和业务人员的猜测也一致,由于ftp使用的目录结构层次较深、文件数也比较多,业务在备份老的使用目录并重新创建单层目录后,观察一段后,发现load average降下来了,稳定在1以下。
当然这里只是处理方法的一种,现网中有些程序不好进行这样的修改的,又不让让进程在cpu之间频繁切换的,也有通过设置固定运行的CPU上进行调优的方法,如下两个进程运行在0-7号cpu上:
[root@www ~]# taskset -c -p 6389
pid 6389's current affinity list: 0-7
[root@www ~]# taskset -c -p 6580
pid 6580's current affinity list: 0-7
可以通过taskset让其固定在0-1号cpu上运行:
[root@www ~]# taskset -c 0,1 -p 6389
这样做的原理是每当进程在切换到下一个cpu core上进会flush当前的cache数据,指定CPU时会减少这样的操作,增加进程的处理速度。这个对老的程序调优时比较有效。 参考技术A 非常多的df -h进程没有退出。于是手工kill掉这些 df -h进程。cpu load恢复正常。
至于为什么会有这么多 df -h进程,给出的解释是:挂了NFS,之前没有umount干净,所以有df -h进程本回答被提问者采纳
Linux 突然很占cpu load average 很高!!!
整个的系统没动,前两天还是很好的。但是这几天,linux突然很慢的感觉。而且,cpu使用率飙升!! 找了很久,仍然找不到答案。 load averag 伴随着也会很高。 这种情况程周期性性出现。 每次都出现一天到两天。 不知道为什么~~ 希望大侠能给点帮助
1、先使用top看下CPU占用高的进程,找出进程的进程ID(pid);查看方法:top
2、根据进程ID(pid)查看是进程的那些线程占用CPU高。
查看方法:top -Hp pid
3、使用pstack,查看CPU占用高的线程在干什么。
查看方法:pstack pid
4、根据pstack分析,应该可以看出问题所在。 参考技术A 到终端,输入top,查看最占资源的线程。 参考技术B 你用得是哪一款雷尼克斯,我怎么下载的没有一个能用的。
以上是关于linux nfs load average 高怎么排查的主要内容,如果未能解决你的问题,请参考以下文章