1. 程式人生 > >linux load average 異常

linux load average 異常

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

[[email protected] ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2
[[email protected] ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores	: 2
[[email protected] ~]# 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
[
[email protected]
~]# w 21:29:26 up 1 day, 2:17, 2 users, load average: 4.24, 4.24, 4.29 USER TTY FROM [email protected] 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負載排行 [
[email protected]
~]# 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全佔用了 [
[email protected]
~]# 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 指定優先順序 [[email protected] aa]# nice -n 5 vim [[email protected] ~]# nice -n 1 vi& [1] 2954 [[email protected] ~]# 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 [[email protected] ~]# rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public [[email protected] ~]# curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo [[email protected] ~]# yum list dkms [[email protected] ~]# yum -y install dkms.noarch [[email protected] ~]# rpm -i http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm [[email protected] ~]# yum -y install sysdig [[email protected] ~]# sysdig-probe-loader 詳細的安裝方法在前兩個url都有很好的解釋,好文章 [[email protected] ~]# 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個異常前的操作情況的回滾,在同時檢視有沒有這幾個程序的出現 來找出到底是什麼原因造成這樣的情況