- 系統的運行狀況: CPU-> MEM ->DISK*-> NETWORK -> 應用程序調優
性能優化的4個子系統:
CPU
Memory
IO
Network - 分析是否有瓶頸(依據當前應用需求)
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,這個經驗值。
一、按照實際使用CPU,從大到小排序顯示所有進程列表
[root@stu003 ~]# ps -aux --sort -pcpu | more #按cpu降序排序
查看 -pcpu 幫助:
[root@Hjj ~]# man ps #然後搜索 pcpu ,找到下面內容
pcpu cpu utilization # cpu利用率
注: -pcpu 和-cpu 相比, -pcpu 可以顯示出進程絕對路徑,方便找出木馬程序運行的路徑。
二、按照實際使用內存,從大到小排序顯示所有進程列表
[root@Hjj ~]# ps -aux --sort -rss | more 內存降序排序(去掉減號就是升序)
或:
[root@Hjj ~]# ps -aux --sort -rss > a.log
三、找出系統中對磁盤讀寫最多的進程
1、iostat 可以顯示CPU和I/O系統的負載情況及每個磁盤分區的讀寫狀態信息.
從而知道我們系統IO 是否存在問題。
2、安裝iostat:
[root@Hjj ~]# yum -y install iostat
常用參數:
-d 僅顯示磁盤統計信息
-k 以K爲單位顯示每秒的磁盤請求數,默認單位塊.
-p device | ALL 用於顯示塊設備及系統分區的統計信息
例:顯示每個分區讀寫速度
[root@Hjj ~]# iostat -p sda -dk
Linux 2.6.32-220.el6.x86_64 (Hjj) 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.
四、查看系統中使用io最多的進程
參數:
-o, -only 只顯示在讀寫硬盤的程序
-d SEC, –delay=SEC 設定顯示時間間隔
退出,按q或ctrl+C
例1:
安裝:
[root@Hjj ~]# yum -y install iotop
[root@Hjj ~]# 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
只是對Linux下的開源工具做了一個封裝。
實戰1:使用nload監控總體帶寬使用情況
實戰2:使用iptraf查看每個鏈接與主機之間的數據,找出惡意消耗帶寬最多的IP
實戰3:使用nethogs找出使用帶寬最多的進程
實戰1:使用nload監控總體帶寬使用情況
rz 上傳nload.rpm到RHEL上
[root@Hjj ~]# rpm -ivh nload-0.7.4-1.el6.x86_64.rpm
或wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz
[root@iZ25b6alxstZ ~]# yum install nload -y (在centos上,配置好epel源)
yum -y install ncurses*
[root@Hjj ~]# nload #開始監控
然後另一個終端上運行:
[root@Hjj ~]# ab -n 10000 -c 2 http://www.baidu.com/index.html #產生一些測試數據
查看結果:
Incoming : 下載 Outgoing :上傳
[root@Hjj ~]# rpm -ivh /mnt/Packages/iptraf-3.0.1-13.el6.x86_64.rpm
iptraf是一款交互式、色彩鮮豔的IP局域網監控工具。它可以顯示每個連接以及主機之間傳輸的數據量。
實戰2:使用iptraf查看每個鏈接與主機之間的數據,找出惡意消耗帶寬最多的IP
[root@Hjj ~]# iptraf
實戰3:分析服務器上某個端口上產生的流量。
實戰背景: 晚上下載了一個黑客工具,想知道這個軟件有沒有留後門,怎麼辦?
在運行軟件之前,先監控一下流量 。
Statistical breakdowns. 統計分析。
選擇統計端口上的流量:
nethogs是一款小巧的"net top"工具,可以顯示每個進程所使用的帶寬,並對列表排序,將耗用帶寬最多的進程排在最上面。萬一出現帶寬使用突然激增的情況,用戶迅速打開nethogs,就可以找到導致帶寬使用激增的進程。nethogs可以報告程序的進程編號(PID)、用戶和路徑。