监控CPU、內存

监控CPU是日常主要工作的一项,因为CPU利用率很高,有可能是服务器上可能有很多计算的SQL语句,也可能是索引没有建好或者没有建立索引导致。
        
         用top命令可以查出当前CPU使用情况。
         top - 14:29:42 up 454 days, 19:36, 33 users,  load average: 2.02, 1.70, 1.58
        Tasks: 1421 total,   1 running, 1419 sleeping,   1 stopped,   0 zombie
        Cpu(s):  1.2%us,  0.1%sy,  0.0%ni, 97.5%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st
        Mem:  132103620k total, 117597200k used, 14506420k free,   234836k buffers
        Swap: 37887992k total,  1111756k used, 36776236k free, 11139408k cached

        load average:負載情況,如果說性能是服務器能夠跑多快,那麼,負載就是能夠跑多久。
        load average: 2.02, 1.70, 1.58 這個是1分鐘、5分鐘、15分鐘的負載情況。
        該數據是根據是每間隔5秒鐘計算一次,根據活躍進程數計算出來的,如果這個值除以CPU的數目超過5說明超負荷了。
        
        CPU使用率很高原因可能是因為索引,IO使用率很高也可能是索引問題,可以考慮把訪問頻繁的數據放到redis中進行緩存,可以降低CPU、IO的負載。
        CPU一些衡量指標: 用户user%<10% 、wait%<5%、idle%<80%、IOWAIT<5%。
    
sar -p 也可以查看CPU使用情況
    
01:30:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:40:01 PM     all          0.56      0.00      0.17      1.73      0.00     97.55
01:50:01 PM     all          0.37      0.00      0.16      1.89      0.00     97.57
02:00:01 PM     all          1.02      0.00      0.18      1.29      0.00     97.52
02:10:01 PM     all          1.47      0.00      0.22      0.83      0.00     97.47
02:20:01 PM     all          2.13      0.00      0.26      0.56      0.00     97.04
02:30:01 PM     all          1.93      0.00      0.23      0.70      0.00     97.14
02:40:01 PM     all          1.75      0.00      0.17      0.83      0.00     97.25
02:50:01 PM     all          1.57      0.00      0.15      0.80      0.00     97.49
03:00:01 PM     all          1.55      0.00      0.14      0.76      0.00     97.55
03:10:01 PM     all          3.37      0.00      0.29      0.86      0.00     95.48
03:20:01 PM     all          2.96      0.00      0.26      0.82      0.00     95.96
Average:           all          2.17      0.00      0.30      0.42      0.00     97.12 

   %user是用戶CPU使用率,%system是系統CPU使用率。
   如果%user很高說明,用戶進程負載很高,可能是SQL語句的問題,可以在MySQL中用show full processlist\G來查看SQL語句執行情況,從而選擇語句進行explain查看,需要改寫的改寫,需要優化索引的優化索引。
   如果%system很高可能會導致中斷。IO比较差或者发生频繁SWAP还有网络IO很高,除了IDLE任何一列超过10说明很高,需要关注。

  內存:free -m即可監控。     
  主要關注cached、used,如果cached低,used高要注意了,可能是內存洩漏,就是沒有及時釋放使用完畢的內存。

    sar -r也可以查看內存使用情況:
    01:30:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    01:40:01 PM  15608224 116495396     88.18    228912  10124336 107304284     63.12
    01:50:01 PM  15028680 117074940     88.62    230884  10681796 107303308     63.12
    02:00:01 PM  15007156 117096464     88.64    231896  10703256 107321572     63.13
    02:10:01 PM  14515268 117588352     89.01    232040  11143528 107349252     63.15
    02:20:01 PM  14505052 117598568     89.02    233420  11146696 107360896     63.16
    02:30:01 PM  14507368 117596252     89.02    234868  11139748 107366216     63.16
    02:40:01 PM  14487060 117616560     89.03    236304  11110168 107405800     63.18
    02:50:01 PM  14572496 117531124     88.97    237668  11050164 107371496     63.16
    03:00:01 PM  14587436 117516184     88.96    239220  11033556 107360344     63.16
    03:10:01 PM  15703372 116400248     88.11    236808   9932424 107357368     63.15
    03:20:01 PM  16501268 115602352     87.51    236868   9172400 107355456     63.15
    03:30:01 PM  16367920 115735700     87.61    239096   9285328 107386628     63.17
        Average:     17878881 114224739     86.47    179138   8503225 107470051    63.22
 

1 个评论

文章中还有繁体字~~~

要回复文章请先登录注册