版權所有,尊重他人勞動成果,轉載時請注明作者和原始出處及本聲明。
原文名稱:《Linux Performance and Tuning Guidelines》
原文地址:http://www.redbooks.ibm.com/abstracts/redp4285.html
-------------------------------------------------------------------------------------------
netstat是常用工具之一。
如果你在網絡環境中工作,應該對它非常熟悉。
它可以顯示許多網絡相關信息如套接字使用情況、路由、接口、協議、網絡數據統計等。
下面是以下基本的選項:
-a :顯示所有套接字信息
-r :顯示路由信息
-i :顯示網絡接口信息
-s :顯示網絡協議信息
還有很多其他有用的選項,請查看man手冊。下面的例子顯示了套接字相關信息的輸出結果。
例子2-21:使用netstat顯示套接字相關信息
套接字信息
Proto :套接字使用的協議(tcp,udp,raw)。
Recv-Q :連接此套接字的用戶程序為復制的字節數量。
Send-Q :遠程主機未確認的字節數量。
Local Address :本地套接字的地址和端口。除非使用--numeric(-n)選項,否則套接字地址將被解析成域名(FQDN)端口號則被轉換成相應的服務名稱。
Foreign Address :遠程主機套接字的地址和端口號。
State :套接字狀態。由於在原始模式【raw mode】和UDP沒有狀態,此列顯示為空。
關於可能顯示的狀態,請參見圖1-28或者查看man手冊。
iptraf可以實時監控TCP/IP網絡流量並實時產生相關報告。
它可以以接口和協議來顯示每個會話的TCP/IP流量的統計信息。
iptraf是由iptraf工具包提供的。
iptraf為我們提供如下信息:
▶ IP traffic monitor: TCP連接相關的網絡傳輸統計信息
▶ General interface statistics: 網絡接口的網絡傳輸統計信息
▶ Detailed interface statistics: 按協議分類顯示網絡傳輸統計信息
▶ Statistical breakdowns: 按TCP/UDP和封包大小分類顯示網絡傳輸統計信息
▶ LAN station monitor: 按第二層地址分類顯示網絡傳輸統計信息
下面是由iptraf產生的報告。
圖2-2:使用iptraf按協議分類顯示TCP/IP網絡傳輸統計信息
圖2-2:使用iptraf按封包大小分類顯示TCP/IP網絡傳輸統計信息
tcpdump和ethereal可以用來獲取和分析網絡通訊活動,他們都是使用libpcap庫來捕獲網絡封包的。
在混雜模式下他們可以監控網絡適配器的所有通訊活動並捕獲網卡所接收的所有幀。
要想設置網絡接口為混雜模式並執行這些命令來捕獲所有的網絡封包,需要具有超級用戶的權限。
你可以使用這些工具來探究網絡相關問題。你可以發現TCP/IP重發、窗口大小的縮放、名字解析的問題、網絡配置錯誤等。
注意這些工具只能監控網絡適配器所接收到的幀,並不能監控到整個網絡的通訊情況。
tcpdump
tcpdump是一個簡單卻很強大的工具。
它提供基本協議的分析功能,讓你獲得網絡使用的概況。
tcpdump支持許多選項和復雜的表達式用於過濾所要捕獲的幀(捕獲過濾器【Capture filter】),下面讓我們一起來了解一下。
選項:
-i <接口> :網絡接口
-e :打印鏈路層【link-level】頭信息
-s <snaplen> :從每個封包中截取<snaplen>字節
-n :不執行DNS解析
-w <文件名> :寫入文件
-r <文件名> :從文件中讀取
-v, -vv, -vvv :輸出詳細的結果
捕獲過濾器表達式:
關鍵字:host dst, src, port, src port, dst port, tcp, udp, icmp, net, dst net, src net, 等
下面操作符可以用來合並多個Primitive:
非('!'或者'not')
與('&&'或者'and')
或('||'或者'or')
常用表達式示例:
▶ DNS查詢封包
tcpdump -i eth0 'udp port 53'
▶ 連接192.168.1.10的FTP控制和數據會話。
tcpdump -i eth0 'dst 192.168.1.10 and (port ftp or ftp-data)'
▶ 連接到192.168.2.253的HTTP會話
tcpdump -ni eth0 'dst 192.168.2.253 and tcp and port 80'
▶ 連接到192.138.2.0/24子網的Telnet會話
tcpdump -ni eth0 'dst net 192.168.2.0/24 and tcp and port 22'
▶ 源地址與目的地址不在192.168.1.0/24子網內並且TCP SYN或TCP FIN標志開啟(TCP連接建立或結束)
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net 192.168.1.0/24'
例子2-22:tcpdump輸出結果示例
關於更多詳細內容參見man手冊
ethereal
ethereal與tcpdump有着相似的功能但更加復雜,有進階的協議分析和報告功能。它可以通過圖形化界面或命令行來使用,
它屬於ethereal工具包的一部分。
像tcpdump一樣它也可以使用捕獲過濾器,並且還支持顯示過濾器,這樣可以減少幀。
這里有一些常用表達式例子:
▶ IP
ip.version == 6 and ip.len > 1450
ip.addr == 129.111.0.0/16
ip.dst eq www.example.com and ip.src == 192.168.1.1
not ip.addr eq 192.168.4.1
▶ TCP/UDP
tcp.port eq 22
tcp.port == 80 and ip.src == 192.168.2.1
tcp.dstport == 80 and (tcp.flags.syn == 1 or tcp.flags.fin == 1)
tcp.srcport == 80 and (tcp.flags.syn == 1 and tcp.flags.ack == 1)
tcp.dstport == 80 and tcp.flags == 0x12
tcp.options.mss_val == 1460 and tcp.option.sack == 1
▶ Application
http.request.method == "POST
smb.path contains \\\\SERVER\\SHARE
圖2-4:ethereal圖形化界面
要運行nmon,只需啟動該工具並輸入所感興趣子系統對應的字母即可。例如要獲得CPU、內存、硬盤的相關信息,啟動nmon並輸入c m d。
在nmon中一個非常有用的功能就是將性能相關統計信息保存到CSV文件中用於后續分析。
在表格處理軟件中導入nmon輸出的CSV文件來產生圖形化報表。要達成這樣的目的,nmon啟動時需要使用-f參數(使用nmon -h查看詳細內容)。
例如執行nmon每30秒鍾快照一次連續一個小時獲取數據,可以使用例子2-23的命令。
例子2-23:使用nmon來記錄性能相關數據
上面例子的輸出結果將被存儲在當前目錄的一個文本文件中,文件名為<hostname>_date_time.nmon。
關於nmon的更多信息,我們建議你訪問
http://www-941.haw.ibm.com/collaboration/wiki/display/WikiPtype/nmon
下載nmon,訪問
http://www.ibm.com/collaboration/wiki/display/WikiPtype/nmonanalyser
要跟蹤某個進程,需要指定被監控進程的進程ID(PID):
strace -p <pid>
例子2-24展示了strace的輸出結果。
例子2-24:strace監控httpd進程的輸出結果
注意:當針對某個進程執行strace命令,此進程的性能將大大降低,所以只有在搜集數據時才執行此命令。
這里有另外一個有趣的用法。此命令可以報告在執行某個命令時被系統調用消耗了多少內核時間。
strace -c <command>
例子2-25:strace關於系統時間的計算結果
關於strace命令的完整用法,輸入:
strace -?
在proc文件系統中,有幾個子目錄我們從名字就能辨別出他們的用途,但proc目錄中的大部分信息是很難讀懂的,
你最好使用像vmstat這樣的工具通過更易讀的方式來顯示各種統計信息。
注意在不同的系統架構中proc文件系統的布局和所包含信息有所不同。
▶ /proc目錄中文件
proc根目錄下的文件涉及多種有關系統的統計信息。你可以使用如vmstat和cpuinfo來顯示這些信息。
▶ 數字1到X
有一些以數字命名的子目錄,代表運行中進程和相應的進程ID(PID)。目錄結構總是以PID 1開始,它代表init進程。每個以數字命名的子目錄都存儲着所對應進程的統計信息,如進程所映射的虛擬內存。
▶ acpi
ACPI表示高級配置和電源管理接口,大多數台式電腦和筆記本電腦現在都支持此技術。因為ACPI主要為PC技術,在服務器系統中通常被禁用。關於更多ACPI的資料參考:http://www.apci.info
▶ bus
這個子目錄包含總線子系統的相關信息,如PCI總線或USB接口。
▶ net
net子目錄包含關於網絡接口的大量原始統計數據,如接收的廣播封包或每個網絡接口的路由信息。
▶ scsi
此目錄包含SCSI子系統相關信息,如連接的設備或驅動的版本。在大多數IBM System x服務器中會有一個名叫ips的目錄用來記錄IBM ServeRAID控制器相關信息。
▶ sys
在sys子目錄下你能找到可以調整的內核參數如虛擬內存管理或網絡堆棧。我將在4.3“Changing kernel parameters”中介紹一些選項和可調值。
▶ tty
tty子目錄包含系統各虛擬終端相關信息和它們連接了哪些物理設備。
圖2-6:KDE System Guard默認的窗口
前端圖形界面使用傳感器(sensors)獲得要顯示的信息。傳感器返回的可以是一個簡單的數值或更復雜的信息如表格。
針對不同的信息類型都提供了一個或多個顯示界面。這些顯示界面被組織在多個工作表中,工作表可以獨立存儲和加載。
KSysguard主窗體包括菜單欄、工具欄和狀態欄、傳感器瀏覽區以及工作區。
當初次啟動后,你可以看到默認的界面:本機localhost列在傳感器瀏覽區中,在工作區中有兩個標簽。
每個傳感器監控一個特定的系統值。所有的傳感器都可以拖拽至工作區。
▶ 在工作區中刪除和覆蓋傳感器
▶ 編輯工作表屬性,增加行和列的數量
▶ 創建一個新的工作表,放入你所需要的傳感器
工作區【Workspace】
圖2-7中工作區有兩個標簽:
▶ 系統負載,首次啟動KSysguard時默認的視圖。
▶ 進程表
圖2-7:KDE System Guard傳感器瀏覽
系統負載【System Load】
系統負載工作表有四個傳感器窗口:CPU負載,平均負載(1分鍾),物理內存,和交換內存。多個傳感器可以顯示在同一窗口中。
要了解窗口顯示的是哪些傳感器,將鼠標移動到圖形上就會顯示對應的說明。你也可以在圖形上右鍵點擊Properties,然后點擊Sensors標簽(圖2-8)。
這里也顯示了各傳感器在圖形中所對應的顏色。
圖2-8:傳感器相關信息
進程表【Process Table】
點擊Process Table標簽可以顯示服務器中所有運行中進程的相關信息(圖2-9)。
默認情況下此表格是按系統CPU使用率進行排序的,但也可以通過點擊不同表頭使用相應的欄位排序。
圖2-9:進程表視圖
設置工作表
對於你希望監控的環境或特定區域,你可能需要使用多個不同的監控傳感器。最好的方法就是創建一個自定義的工作表。
在本節中,我們將一步步指導你創建圖2-12那樣的工作表。
1. 點擊File->New,創建一個空工作表。
圖2-10:新工作表的屬性
2. 輸入標題和行列的數量;這將決定監控窗口的最大數量,在我們的示例中為4個。填完信息后,點擊OK創建一個空的工作表,如圖2-11。
注釋:刷新時間間隔為2秒鍾。
圖2-11:空工作表
3. 要增加傳感器,只需從窗口左邊拖拽傳感器到右邊空閑區域。顯示的類型共有下面幾種:
- Signal Plotter:這種類型可以同時顯示一個或多個傳感器。
如果需要顯示多個傳感器,會使用不同的顏色來標示。如果顯示屏足夠大,會使用網格來顯示所顯示數據的區間段。
默認情況下顯示為自動范圍模式【automatic range mode】,最小和最大值會自動設定。
如果你想改變最小和最大值,你需要禁止自動范圍模式,然后在Properties對話框(在圖表中點擊右鍵)的Scales標簽中設置最小和最大值。
- Multimeter:以數字方式顯示傳感器的值。在Properties對話框中你可以定義上下限。如果超出限制時,使用警告色顯示。
- BarGraph:以條形顯示傳感器的值。在Properties對話框中你可以定義上下限。如果超出限制時,使用警告色顯示。
- Sensor Logger:不顯示任何值,而是將上述信息和日期時間一起記錄到文件中。
對於每個傳感器,你必須定義一個日志文件,傳感器記錄的間隔時間和是否需要報警。
4. 點擊File->Save保存工作表
注釋:保存工作表,它將被存儲在用戶家目錄中,其它的管理員不能訪問你自定義的工作表。
圖2-12:工作表示例
要獲得更多關於KDE System Guard,請訪問:
http://docs.kde.org/
要使用Capacity Manager,你首先要安裝相應的RPM包。
安裝RPM后,在IBM Director Console中選擇Capacity Manager->Monitor Activator
圖2-13:IBM Director Console任務列表
拖放Monitor Activator圖標到單獨或一組安裝有Capacity Manager包的系統上。
在打開的窗口中你可以選擇需要監控的子系統。
Linux版Capacity Manager不支持所有可用的性能計數器。系統統計信息受一些性能參數的限制。
圖2-14:啟用性能監控器
Monitor Activator窗口的右面顯示相關系統及當前狀態,在左面顯示各種可用的性能監控器。
要添加新的監控器,選擇所需監控器並點擊On。關閉Monitor Activator窗口后所做改變立即生效。完成此步后,
IBM Director開始搜集所需的性能指標並存儲在各系統的臨時位置中。
要創建搜集數據的報告,選擇Capacity Manager->Report Generator(參見圖2-13)並拖動圖標到單獨或一組系統上。
IBM Director將詢問是否要立即產生還是排定后續執行(圖2-15)。
圖2-15:報告排程
在生產環境中,使用Capacity Manager定期產生報告是一個不錯的做法。我們的經驗是在每周末的非工作時間執行。
立即產生報告還是排定時間產生報告取決於你的選擇。
報告完成后會被存儲在中央IBM Director管理服務器上,可以使用Report Viewer來查看報告。圖2-16展示了Capacity Manager月報告的示例。
圖2-16:Capacity Manager報告示例
在Report Viewer窗口中你可以選擇不同的性能計數器。
Capacity Manager所搜集的數據可以導出成HTML或XML用來顯示在內部web服務器上或后續分析使用。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。