linux load average 异常

环境:
CentOS Linux release 7.3.1611 (Core) Kernel:3.10.0-514.el7.x86_64

[root@localhost ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2
[root@localhost ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores	: 2
[root@localhost ~]# cat /proc/cpuinfo| grep "processor"| wc -l
4
4核cpu

异常之前安装:
<1> yum groupinstall "X Window System"  
#openoffice软件的依赖,目前均已remove
<2> Liberoffice
<3> / 分区进行过扩展
<4> 该服务器作为nfs服务端被别的服务器挂载过

w命令查看load average
[root@localhost ~]# w
 21:29:26 up 1 day,  2:17,  2 users,  load average: 4.24, 4.24, 4.29
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.10.10.138     五23   22:03m  0.03s  0.03s -bash
root     pts/1    10.10.10.138     21:01    6.00s  0.20s  0.13s w

top命令查看执行P查看cpu负载排行
[root@localhost ~]# top
top - 21:31:03 up 1 day,  2:18,  2 users,  load average: 4.69, 4.43, 4.35
Tasks: 168 total,   2 running, 166 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.6 us,  0.9 sy, 97.3 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 16268356 total,  3124536 free,  8092496 used,  5051324 buff/cache
KiB Swap:  8257532 total,  8257532 free,        0 used.  6838028 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                              
    9 root      20   0       0      0      0 S   5.6  0.0  36:37.99 rcu_sched                            
32359 root      20   0  164036   2244   1548 R   5.6  0.0   0:00.06 top                                  
    1 root      20   0  130316   6820   4036 R   0.0  0.0   8:13.10 systemd                              
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.74 kthreadd                             
    3 root      20   0       0      0      0 S   0.0  0.0   0:09.45 ksoftirqd/0                          
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H 

	vmstat命令查看,内存无异常,但是r队列已经是4了,相当于4核cpu全占用了
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0      0 3125052   1040 5050364    0    0    17    77   36  106 99  1  0  0  0

解决思路:
先reboot,无效
正常情况下load average都是在1~2左右,在没有进程(mysql,oracle,java等)时都是0.5左右
97.3 ni值特别高,正常情况下,这个值应该是1-10左右的,0.0 id 已经是0,说明一直再有进程调用cpu
NI是进程的优先值

###### nice 用来设定程序执行的优先级 ######
一般来说,程序的执行就是cpu不停在上面切换而已,默认的情况下,cpu是很公平的,他在每个进程上切换的次数是一样的,
但是如果你有一个程序很占资源,如备份,这些程序,那么你在执行的时候就会很卡,那么这个时候你就会不想要他占用那么资源, 
或者说是你想要让别的程序先执行,那么就需要修改nice这个值,他主要的作用就是修改cpu在该程序上切换的次数 。
<1> nice只能调整没有运行的进程,
<2> 优先级的数值为-20~~19,数值越小优先级越高。-20优先级最高,19的优先级最低。
<3> 普通用户只能再0~~19之间调整值,而且只能调整自己的进程,并且普通用户只能调高NI值不能降低,例如原NI值为0,则普通用户只能调整为大于0
<4> root用户才能设定进程NI值为负值。而且可以调整任何用户的进程
<5> PRI(new) = PRI(old) + NI 且PRI不能手动修改,它是通过PRI(old) + NI计算出来的
选项
-n 指定优先级
[root@www aa]# nice -n 5 vim
[root@www ~]# nice -n 1 vi&
[1] 2954
[root@www ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  1161  1157  0  80   0 - 27096 wait   pts/0    00:00:00 bash
0 T     0  2954  1161  0  81   1 - 29245 signal pts/0    00:00:00 vi
4 R     0  2955  1161  0  80   0 - 27031 -      pts/0    00:00:00 ps
NI列即表示进程的nice值。vi进程对应的NI值正好为刚设置的1。
PRI表示进程当前的总优先级,值越小表示优先级越高,由进程默认的PRI加上NI得到,即PRI(new) = PRI(old) + NI。
由上程序,进程默认的PRI是80,所以加上值为1的NI后,vi进程的PRI为81。
renice 用于改变正在运行的进程的nice值
###### nice 用来设定程序执行的优先级 ######

现在可以肯定是某个NI值高的进程把cpu全部占用了(也就是ni值时-20的)

再来看当前进程ni值比较高的进程
                        
32655 root       0 -20       0      0      0 S   0.0  0.0   0:00.01 kworker/2:1H                         
32577 root      20   0       0      0      0 S   0.0  0.0   0:00.42 kworker/0:2                          
32451 root      20   0       0      0      0 S   0.0  0.0   0:00.18 kworker/u8:0                         
31143 postfix   20   0   90504   4128   3036 S   0.0  0.0   0:00.03 pickup                               
30848 root      20   0  117636   2240   1724 S   0.0  0.0   0:00.41 bash                                 
30842 root      20   0  149728   5296   4000 S   0.3  0.0   0:01.25 sshd                                 
30831 root      20   0       0      0      0 S   0.0  0.0   0:00.36 kworker/2:2                          
29979 root      20   0       0      0      0 S   0.0  0.0   0:01.10 kworker/u8:2                         
27498 root       0 -20       0      0      0 S   0.0  0.0   0:03.02 kworker/1:2H                         
25561 root       0 -20       0      0      0 S   0.0  0.0   0:01.04 kworker/1:1H  
发现都是kworker,不知道是做什么的,找一台状态正常配置相似的虚拟机看下,都有这几个进程,暂时排除
开始网上查资料
参考网址
https://yq.aliyun.com/ziliao/65685
https://www.cnblogs.com/maoxianfei/p/9077089.html
http://lax.v2ex.com/t/456574(重点)


开始安装sysding
[root@mail ~]# rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public
[root@mail ~]# curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo
[root@mail ~]# yum list dkms
[root@mail ~]# yum -y install dkms.noarch 
[root@mail ~]# rpm -i http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm
[root@mail ~]# yum -y install sysdig
[root@mail ~]# sysdig-probe-loader
详细的安装方法在前两个url都有很好的解释,好文章

[root@mail ~]# sysdig -c topprocs_cpu
CPU%                Process             PID                 
--------------------------------------------------------------------------------
98.49%              <NA>                866
98.49%              <NA>                868
98.49%              <NA>                861
95.53%              <NA>                869
2.95%               sysdig              1847
0.98%               java                14885
0.00%               oracle              3057
0.00%               systemd-udevd       566
0.00%               systemd-logind      733
0.00%               irqbalance          734

和第三篇url是一样的情况,开杀(随便杀一个,其他三个就会消失)
CPU%                Process             PID                 
--------------------------------------------------------------------------------
2.00%               oracle              4535
1.00%               sysdig              1915
0.00%               chronyd             742
0.00%               rtl_cache_wsupd     15770
0.00%               oracle              3057
0.00%               systemd-udevd       566
0.00%               oracle              3182
0.00%               soffice.bin         15722
0.00%               soffice.bin         15770
0.00%               rtl_cache_wsupd     15674
暂时正常
抽时间在虚拟机上测试分别进行4个异常前的操作情况的回滚,在同时查看有没有这几个进程的出现
来找出到底是什么原因造成这样的情况

猜你喜欢

转载自blog.csdn.net/cql08e/article/details/81813657
今日推荐