Linux系統調優相關工具

目錄php

  • 系統調優4大子系統
  • 實戰1:找出系統中使用CPU最多的進程?
  • 實戰2:找出系統中使用內存最多的進程?
  • 實戰3:找出系統中對磁盤讀寫最多的進程?
  • 實戰4:找出系統中使用網絡最多的進程?

 

系統調優概述html

1. 系統的運行情況:  CPU->  MEM  ->DISK*->  NETWORK -> 應用程序調優node

性能優化的4個子系統:linux

    CPUios

    Memoryc++

    IOapache

    Networkcentos

2. 分析是否有瓶頸(依據當前應用需求)性能優化

 

出現如下問題,怎麼解決?服務器

1、找出系統中使用CPU最多的進程?

2、找出系統中使用內存最多的進程?

3、找出系統中對磁盤讀寫最多的進程?

4、找出系統中使用網絡最多的進程?

 

1、查看CPU負載相關工具

uptime命令:

[root@localhost ~]# uptime

13:22:30 up 8 min,  4 users,  load average: 0.14, 0.38, 0.25

其內容以下:

 

12:38:33

當前時間

up 50days

系統運行時間 ,說明此服務器連續運行50天了

1 user

當前登陸用戶數

load average: 0.06, 0.60, 0.48

系統負載,即任務隊列的平均長度。 三個數值分別爲  1分鐘、5分鐘、15分鐘前到如今的平均值。

 

 

例1:找出前當系統中,CPU存在瓶頸的服務器?

服務器1:  load average: 0.15,  0.08,  0.01    1核

服務器2: load average: 4.15,  6.08,  6.01   1核   

服務器3: load average: 10.15,  10.08,  10.01   4核  

答案:2

 

若是服務器的CPU爲1核心,則load average中的數字  >=3  負載太高,若是服務器的CPU爲4核心,則load average中的數字  >=12  負載太高。

隊列數爲3時,如圖:

理論上:單核心,1分鐘的系統平均負載不要超過3,這個經驗值。

 

實戰1:找出系統中使用CPU最多的進程?

方法1:使用top命令

運行top , 而後數字鍵1

找出使用CPU最多的進程 ,按大寫的P,能夠按CPU使用率來排序顯示

 

 

實戰2:按照實際使用CPU,從大到小排序顯示全部進程列表

[root@localhost ~]# ps -aux --sort -pcpu | more   #按cpu降序排序

查看 -pcpu 幫助:

[root@localhost ~]# man ps  #而後搜索 pcpu  ,找到下面內容

  pcpu         cpu utilization   # cpu利用率

注:  -pcpu 和-cpu 相比,  -pcpu 能夠顯示出進程絕對路徑,方便找出木馬程序運行的路徑。

 

實戰2:找出系統中使用內存最多的進程?

方法1:使用top命令

運行top , 而後按下大寫的M 能夠按內存使用率來排序顯示,大寫的P,按照內存的大小,進行排序。

方法2:

實戰:按照實際使用內存,從大到小排序顯示全部進程列表

[root@localhost ~]#ps -aux --sort -pcpu | more              #降序排序

[root@localhost ~]#man ps         #而後搜索pcpu,找到姓名內容。

pcpu             cpu utilization              #cpu利用率

注 : -pcpu和-cpu相比 ,-pcpu能夠顯示出進程絕對路徑,方便找出木馬程序運行的路徑。

 

[root@localhost ~]#  ps -aux  --sort -rss | more 內存降序排序(去掉減號就是升序)

或:

[root@localhost ~]#  ps -aux  --sort -rss > a.log

rss              resident set size            常駐集大小

實例 : 

降序排序,CPU從大到小。

 

 

3、找出系統中對磁盤讀寫最多的進程

I/O調優相關查看工具  

實戰1:查看哪一個磁盤或分區最繁忙?

經過iostat命令查看IO是否存在瓶頸

iostat 能夠顯示CPU和I/O系統的負載狀況及每一個磁盤分區的讀寫狀態信息. 

從而知道咱們系統IO 是否存在問題。

 

安裝iostat:

 [root@localhost ~]# rpm -ivh /mnt/Packages/sysstat-9.0.4-18.el6.x86_64.rpm

 

 

經常使用參數:

-d                     僅顯示磁盤統計信息

-k                    以K爲單位顯示每秒的磁盤請求數,默認單位塊.

-p device | ALL                   用於顯示塊設備及系統分區的統計信息

 

例:顯示每一個分區讀寫速度

[root@localhost ~]# iostat -p sda -dk

Linux 2.6.32-220.el6.x86_64 (xuegod63.cn)      08/04/2015    _x86_64_  (4 CPU)

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               7.25       252.33        12.99     206953      10657

sda1              0.63         2.43         0.01       1996          9

sda2              5.99       247.27        12.98     202805      10648

sda3              0.43         1.77         0.00       1452          0

注:

每列含意:

kB_read/s               每秒從驅動器讀入的數據量,單位爲K.

kB_wrtn/s               每秒向驅動器寫入的數據量,單位爲K.

kB_read                  讀入的數據總量,單位爲K.

kB_wrtn                  寫入的數據總量,單位爲K.

方法2:

實戰:按照實際使用內存,從大到小排序顯示全部進程列表

[root@localhost ~]#  ps -aux  --sort -rss | more 內存降序排序(去掉減號就是升序)

或:

[root@localhost ~]#  ps -aux  --sort -rss > a.log

 

3、找出系統中對磁盤讀寫最多的進程

I/O調優相關查看工具  

實戰1:查看哪一個磁盤或分區最繁忙?

經過iostat命令查看IO是否存在瓶頸

iostat 能夠顯示CPU和I/O系統的負載狀況及每一個磁盤分區的讀寫狀態信息. 

從而知道咱們系統IO 是否存在問題。

 

安裝iostat:

 [root@localhost ~]# rpm -ivh /mnt/Packages/sysstat-9.0.4-18.el6.x86_64.rpm

 

經常使用參數:

-d 僅顯示磁盤統計信息

-k 以K爲單位顯示每秒的磁盤請求數,默認單位塊.

-p device | ALL 用於顯示塊設備及系統分區的統計信息

 

例:顯示每一個分區讀寫速度

[root@localhost ~]# iostat -p sda -dk

Linux 2.6.32-220.el6.x86_64 (xuegod63.cn)      08/04/2015    _x86_64_  (4 CPU)

 

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               7.25       252.33        12.99     206953      10657

sda1              0.63         2.43         0.01       1996          9

sda2              5.99       247.27        12.98     202805      10648

sda3              0.43         1.77         0.00       1452          0

注:

每列含意:

kB_read/s   每秒從驅動器讀入的數據量,單位爲K.

kB_wrtn/s    每秒向驅動器寫入的數據量,單位爲K.

kB_read    讀入的數據總量,單位爲K.

kB_wrtn    寫入的數據總量,單位爲K.

 

實戰2:查看哪一個進程使用磁盤讀寫最多?

iotop命令,查看哪一個進程使用磁盤讀寫最多

實例:查看系統中使用io最多的進程

參數:

-o, -only            只顯示在讀寫硬盤的程序

-d SEC, –delay=SEC              設定顯示時間間隔

退出,按q或ctrl+C

例1:

 

安裝:

[root@localhost ~]# rpm -ivh /mnt/Packages/iotop-0.3.2-3.el6.noarch.rpm

 

 [root@localhost ~]# iotop -o -d 1     #顯示正在使用磁盤的進程

Total DISK READ: 1458.61 K/s | Total DISK WRITE: 0.00 B/s

  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND            

 2654 be/4 root     1458.61 K/s    0.00 B/s  0.00 % 60.62 % find /

1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init

-o      #在讀取的進程    -d    #時間間隔,多長時間刷新一次。

在另外一個終端執行:

[root@localhost ~]# find /

查看結果:

 

4、找出系統中使用網絡最多的進程?

  單擊後,能夠查到每一個進程使用的流量。

 

 

實戰1:使用nload監控整體帶寬使用狀況

實戰2:使用iptraf查看每一個連接與主機之間的數據,找出惡意消耗帶寬最多的IP

實戰3:使用nethogs找出使用帶寬最多的進程

實戰1:使用nload監控整體帶寬使用狀況

rz 上傳nload.rpm到RHEL上

[root@localhost ~]# rpm -ivh nload-0.7.4-1.el6.x86_64.rpm

wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz

tar -zxvf nload-0.7.2.tar.gz

./configure      (編譯)

常見編譯報錯

沒有c++軟件包

yum install -y gcc*              #安裝全部跟gcc有關的 軟件包

再次編譯,而後使用echo $?命令 ,查看編譯是否出錯,返回0,說明沒問題。

 

[root@localhost ~]# yum install nload -y   (在centos上,配置好epel源)

yum -y install ncurses*                               #nload依賴的軟件包

[root@localhost ~]# nload        #開始監控

而後另外一個終端上運行:

[root@localhost ~]# ab -n 10000 -c 2 http://www.baidu.com/index.html  #產生一些測試數據

-n    # 訪問10000次數              -c        #時間爲2秒

若是沒有ab命令 ,安裝 : #yum install -y httpd    (ab在httpd自帶的命令)

查看結果:

Incoming : 下載   Outgoing  :上傳

 

[root@localhost ~]# rpm -ivh /mnt/Packages/iptraf-3.0.1-13.el6.x86_64.rpm

 

iptraf是一款交互式、色彩鮮豔的IP局域網監控工具。它能夠顯示每一個鏈接以及主機之間傳輸的數據量。

實戰2:使用iptraf查看每一個連接與主機之間的數據,找出惡意消耗帶寬最多的IP

 

[root@localhost ~]# yum install -y iptraf

[root@localhost ~]# iptraf             

顯示下面頁面,直接回車,

選擇第一個,直接回車。

選擇eth0網卡

 

 

 

實戰3:分析服務器上某個端口上產生的流量。

實戰背景: 晚上下載了一個黑客工具,想知道這個軟件有沒有留後門,怎麼辦?

在運行軟件以前,先監控一下流量 。

Statistical breakdowns.  統計分析。

選擇統計端口上的流量:

#/etc/initd./httpd restart                          #重啓apache服務,查看是否實時檢測到80 端口

 

nethogs是一款小巧的"net top"工具,能夠顯示每一個進程所使用的帶寬,並對列表排序,將耗用帶寬最多的進程排在最上面。萬一出現帶寬使用忽然激增的狀況,用戶迅速打開nethogs,就能夠找到致使帶寬使用激增的進程。nethogs能夠報告程序的進程編號(PID)、用戶和路徑。

 

實戰3: 使用nethogs找出使用帶寬最多的進程

nload + nethogs  =

[root@localhost ~]#rpm -ivh nethogs-.8.5-1.el6.x86_64.rpm      #配好eple源

下載nethogs

解壓nethogs : tar -xvf nethogs-0.8.0.tar.gz

cd nethogs

yum install -y ncurses-devel

下載依賴包: 

libpcap-devel

rpm -ivh --nodeps libpcap-devel-1.3.0-2.4.1.x86_64.rpm

#make && make install             #編譯 、安裝
#echo $?                #上一步驟,沒問題  
0

#nethogs

打開另外一個終端。

使用wget下載東西,查看

 

 

總結

  • 系統調優4大子系統
  • 實戰1:找出系統中使用CPU最多的進程   top  -》 P 或  ps -axu --sort -pcpu
  • 實戰2:找出系統中使用內存最多的進程  top -》 M   或  ps -axu --sort -rss
  • 實戰3:找出系統中對磁盤讀寫最多的進程 iostat  和 iotop

實戰4:找出系統中使用網絡最多的進程  nload , iptraf ,nethogs

相關文章
相關標籤/搜索