① 伺服器里的吞吐量指的是什麼
吞吐量:系統在單位時間內處理請求的數量。只不過是一個很寬泛的術語,大家經常指的吞吐量的單位可能是:TPS/QPS、頁面數/秒、人數/天、處理業務數/小時等等。
幾個相關的概念:TPS、QPS、RPS
TPS:Transactions Per Second(每秒事務處理數),指伺服器每秒處理的事務次數。一般用於評估資料庫、交易系統的基準性能。
QPS:Queries Per Second(查詢量/秒),是伺服器每秒能夠處理的查詢次數,例如域名伺服器、Mysql查詢性能。
RPS:Request Per Second(請求數/秒)
RPS(Request Per Second)和QPS可以認為是一回事。
RT:Response Time(響應時間):客戶端發一個請求開始計時,到客戶端接收到從伺服器端返回的響應結果結束所經歷的時間,響應時間由請求發送時間、網路傳輸時間和伺服器處理時間三部分組成。也叫Think Time。
並發數與TPS/QPS的關系:
QPS(TPS)= 並發數/平均響應時間
這里的並發數如果為事務處理請求數,則為TPS,如果為查詢請求數,則為QPS。
② oracle 如何查看一個伺服器上有多少個資料庫.
可以在伺服器上查看啟動了多少個oracle的服務,如圖,這就是代表一個服務,也就是代表一個資料庫,如果是還有其他資料庫,同樣會以OracleService開頭的服務。
Oracle資料庫簡介:
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的資料庫解決方案。
③ 如何檢查linux伺服器cpu,內存性能
1.查看系統負載
(1)uptime
這個命令可以快速查看機器的負載情況。
在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態為D)的數量。
命令的輸出,load average表示1分鍾、5分鍾、15分鍾的平均負載情況。
通過這三個數據,可以了解伺服器負載是在趨於緊張還是趨於緩解。
如果1分鍾平均負載很高,而15分鍾平均負載很低,說明伺服器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪裡。
反之,如果15分鍾平均負載很高,1分鍾平均負載較低,則有可能是CPU資源緊張時刻已經過去。
(2)W
Show who is logged on and what they are doing.
可查詢登錄當前系統的用戶信息,以及這些用戶目前正在做什麼操作
其中的load average後面的三個數字則顯示了系統最近1分鍾、5分鍾、15分鍾的系統平均負載情況
注意:
load average這個輸出值,這三個值的大小一般不能大於系統邏輯CPU的個數。
如果輸出中系統有4個邏輯CPU,如果load average的三個值長期大於4時,說明CPU很繁忙,負載很高,可能會影響系統性能,
但是偶爾大於4時,倒不用擔心,一般不會影響系統性能。相反,如果load average的輸出值小於CPU的個數,則表示CPU還有空閑
2.dmesg | tail
該命令會輸出系統日誌的最後10行。
這些日誌可以幫助排查性能問題.
3.vmstat
vmstat Virtual Meomory Statistics(虛擬內存統計),用來獲得有關進程、虛存、頁面交換空間及 CPU活動的信息。這些信息反映了系統的負載情況。
後面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義
(1)監控進程procs:
r:等待在CPU資源的進程數。
這個數據比平均負載更加能夠體現CPU負載情況,數據中不包含等待IO的進程。如果這個數值大於機器CPU核數,那麼機器的CPU資源已經飽和(出現了CPU瓶頸)。
b:在等待io的進程數 。
(2)監控內存memoy:
swpd:現時可用的交換內存(單位KB)
free:系統可用內存數(以千位元組為單位)
buff: 緩沖去中的內存數(單位:KB)。
cache:被用來做為高速緩存的內存數(單位:KB)。
(3)監控swap交換頁面
si: 從磁碟交換到內存的交換頁數量,單位:KB/秒。
so: 從內存交換到磁碟的交換頁數量,單位:KB/秒。
如果這個數據不為0,說明系統已經在使用交換區(swap),機器物理內存已經不足。
(4)監控 io塊設備
bi: 發送到塊設備的塊數,單位:塊/秒。
bo: 從塊設備接收到的塊數,單位:塊/秒。
(5)監控system系統
in: 每秒的中斷數,包括時鍾中斷。
cs: 每秒的環境(上下文)轉換次數。
(6)監控cpu中央處理器:
us:用戶進程使用的時間 。以百分比表示。
sy:系統進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(內核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。
這些CPU時間,可以讓我們很快了解CPU是否出於繁忙狀態。
註:
如果IO等待時間很長,那麼系統的瓶頸可能在磁碟IO。
如果用戶時間和系統時間相加非常大,CPU出於忙於執行指令。
如果有大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不一定是性能問題,需要結合r隊列,一起分析。
4.mpstat -P ALL 1
該命令可以顯示每個CPU的佔用情況,如果有一個CPU佔用率特別高,那麼有可能是一個單線程應用程序引起的。
MultiProcessor Statistics的縮寫,是實時系統監控工具
其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次采樣的間隔時間
count 采樣的次數,count只能和delay一起使用
all : 指所有CPU
%usr : 顯示在用戶級別(例如應用程序)執行時CPU利用率的百分比
%nice :顯示在擁有nice優先順序的用戶級別執行時CPU利用率的百分比
%sys : 現實在系統級別(例如內核)執行時CPU利用率的百分比
%iowait : 顯示在系統有未完成的磁碟I/O請求期間CPU空閑時間的百分比
%irq : 顯示CPU服務硬體中斷所花費時間的百分比
%soft : 顯示CPU服務軟體中斷所花費時間的百分比
%steal : 顯示虛擬機管理器在服務另一個虛擬處理器時虛擬CPU處在非自願等待下花費時間的百分比
%guest : 顯示運行虛擬處理器時CPU花費時間的百分比
%idle : 顯示CPU空閑和系統沒有未完成的磁碟I/O請求情況下的時間百分比
系統有兩個CPU。如果使用參數 -P 然後緊跟CPU編號得到指定CPU的利用率。
( Ubuntu安裝: apt-get install sysstat)
5.pidstat 1
pidstat命令輸出進程的CPU佔用率,該命令會持續輸出,並且不會覆蓋之前的數據,可以方便觀察系統動態
6.iostat -xz 1
iostat命令主要用於查看機器磁碟IO情況
r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千位元組)。讀寫量過大,可能會引起性能問題。
await:IO操作的平均等待時間,單位是毫秒。這是應用程序在和磁碟交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數值過大,可能是硬體設備遇到了瓶頸或者出現故障。
avgqu-sz:向設備發出的請求平均數量。如果這個數值大於1,可能是硬體設備已經飽和(部分前端硬體設備支持並行寫入)。
%util:設備利用率。這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬體設備已經飽和。
註:如果顯示的是邏輯設備的數據,那麼設備利用率不代表後端實際的硬體設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能
7.free -m
free命令可以查看系統內存的使用情況,-m參數表示按照兆位元組展示。
最後兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。
註:
第二行-/+ buffers/cache,看上去緩存佔用了大量內存空間。這是Linux系統的內存使用策略,盡可能的利用內存,如果應用程序需要內存,這部分內存會立即被回收並分配給應用程序。
如果可用內存非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統性能。
8.sar -n DEV 1
sar命令在這里可以查看網路設備的吞吐率。
在排查性能問題時,可以通過網路設備的吞吐量,判斷網路設備是否已經飽和。
9.sar -n TCP,ETCP 1
sar命令在這里用於查看TCP連接狀態,其中包括:
active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;
passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;
retrans/s:每秒TCP重傳數量;
TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網路環境惡劣,或者伺服器壓力過大導致丟包。
10.top
top命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統內存使用情況(free)、系統CPU使用情況(vmstat)等。
因此通過這個命令,可以相對全面的查看系統負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內存佔用最多的進程、CPU佔用率最高的進程等。
但是,top命令相對於前面一些命令,輸出是一個瞬間值,如果不持續盯著,可能會錯過一些線索。這時可能需要暫停top命令刷新,來記錄和比對數據。
④ linux下怎麼查看伺服器性能
1.1 cpu性能查看
1、查看物理cpu個數:
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
2、查看每個物理cpu中的core個數:
cat /proc/cpuinfo |grep "cpu cores"|wc -l
3、邏輯cpu的個數:
cat /proc/cpuinfo |grep "processor"|wc -l
物理cpu個數*核數=邏輯cpu個數(不支持超線程技術的情況下)
1.2 內存查看
1.3 硬碟查看
1、查看硬碟及分區信息:
fdisk -l
2、查看文件系統的磁碟空間佔用情況:
df -h
3、查看硬碟的I/O性能(每隔一秒顯示一次,顯示5次):
iostat -x 1 5
iostat是含在套裝systat中的,可以用yum -y install systat來安裝。
常關注的參數:
如%util接近100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟可能存在瓶頸。如idle小於70%,I/O的壓力就比較大了,說明讀取進程中有較多的wait。
4、查看linux系統中某目錄的大小:
-sh /root
如發現某個分區空間接近用完,可以進入該分區的掛載點,用以下命令找出佔用空間最多的文件或目錄,然後按照從大到小的順序,找出系統中佔用最多空間的前10個文件或目錄:
-cksh *|sort -rn|head -n 10
以上命令的詳細介紹可如下查詢:
⑤ 如何查詢window伺服器網路流量
一、了解影響上網速度的因素
①出口速度
所謂的出口速度,指的是ADSL也就是ISP服務提供商,比如電信、聯通、鐵通等專門提供網路服務的商家,給您提供的網路速度。要想上網,就必須經過電信聯通鐵通等,所以,上網速度的第一關就是這些ISP給我們提供的帶寬有多大。一般有8M、2M、1M等速度。
②目標速度
除連通互聯網的決定網速的第一關ISP提供商之外,決定上網速度的第二個因素就是目標伺服器資源的響應速度。比如說,您要下載一個ppt文件,現在,我
們有多條路可走,因為我們可以在不同的網站下載相同的軟體。假設,不同的網站伺服器,我們分別標記為A、B、C、D……等。我們都知道,在不同網站下載相
同的文件,速度是不一樣的。因為我們能夠上這些網站,說明這些網站伺服器也是通過ISP服務連通互聯網的。當然,他們的速度也是由於ISP決定其第一關。
③不同時段流量的影響
就拿②來說,如果某個時段某個網站訪問的人數非常多,那麼,針對訪客而言,這台伺服器的速度必然降下來。因為該伺服器的網路帶寬是不變的,但是,訪問的人多了,每個人分到的帶寬就變小了。就像一條路,車少的時候,可以開得快點,車多了,速度自然變慢了。
④其它因素
當然,影響你上網速度除了上述之外,還有其它的因素。比如您的網線如果長期不更換,那麼,必然會存在質量問題,這也會影響速度。此外,線路在傳輸文件的時候,存在信號的衰減,這也是影響上網速度的原因之一。
二、如何確定自己的上網速度
要想真正確定上網速度,光看部分軟體的測評是遠遠不夠的,或者,那是沒有任何意義的。最科學的方法就是,比較法。我們可以測試兩家人的寬頻,比如,AB
兩家都是同一個地方的,並且都是電信的獨立用戶。那麼,我們就可以觀察此二用戶,在相同的URL位置下載相同的資源,看看誰快誰慢。
如下圖,我們可以看出,下載速度為78.20KB/S
這個78.20KB/S,就是你的下載速度。當然,有些軟體的下載速度的表示方法不是KB/S,比如是YKbit/s,如果是這樣,還得將Y除以8才是真正的下載速度。因為1Byte=8*bit。
當然,還有一種方法,就是使用PING命令。
在相同ISP環境下,不同的電腦PING的結果是不同的,誰的time=xxms越小,誰的速度越快。
總之,上網速度是很難准確的計算出來的,只能大體估算一下,只要差距和ISP提供商給的寬頻速度差距不大,一般都是可以接受的。方法二、通過專門的區域網網速查看軟體、區域網流量監控軟體來查看電腦帶寬佔用,實現區域網網速控制。不
過,如果你想精確控制網速,則也可以部署專門的區域網網速控制軟體,這樣不僅可以查看區域網電腦網速,而且還可以限制電腦網速,防止區域網搶網速了。例如
有一款「聚生網管」軟體(網路搜索自己下載吧),只需要在區域網一台電腦部署之後,就可以實時監控區域網電腦網速,並且可以對上行帶寬和下行帶寬進行分別
設置。如下圖所示:
圖:區域網網速控制、區域網帶寬分配功能
此外,還可以通過聚生網管禁止區域網P2P下載、禁止P2P網路電視、禁止在線看視頻等,防止這些網路應用軟體對區域網網速的消耗,從根源上防止區域網網速變慢的情況出現,如下圖所示:
圖:禁止P2P下載、禁止網路電視以及禁止在線看視頻
總
之,區域網查看網路流量、控制區域網網速,一方面可以藉助某些命令,甚至一些網路設備(如路由器、交換機);另一方面,也可以藉助於專業的區域網網速控制
軟體、網管軟體,不僅實現區域網網速限制,而且還可以進一步規范員工上網行為,防止不適當的上網行為對區域網網路資源的消耗,從而實現更為有效的區域網網
速控制和上網流量限制。
⑥ 吞吐量測試時各個幀長的最大數據吞吐率分別是多少哪裡有資料能夠查到
1.用CutFTP工具上傳:在客戶端將文件通過CutFTP上傳到服務端;例:客戶端:;服務端:192.168.3.131 1.在pc機(192.168.0.63)上打開cuteFTP 8,並雙擊192.168.3.131 ; 2.在左側的C:\down….\myth1.mpg下將要上傳的文件拖入右側的pub下,即可,(註:先在右側的上框輸入pub); 3.1.0cable modem測試使用profile 2,2.0cable modem測試使用profile 3,3.0cable modem上傳測試使用profile 30,annex b,下載使用profile 3,annex A,4.在測試過程中觀察吞吐量的變化,5.觀察cpu利用率的變化,觀察方法:1.用nroot登陸,在nroot下,訪問上行板塊,如:telnet1.0.2(上行板塊的位置),然後用croot登陸,並輸入TOP,觀察即可;6.在異常情況,可觀察channel利用率:show docsis channel utilization2.用CutFTP工具上傳下載:在服務端將文件通過CutFTP上傳到客戶端,具體方法與上傳類似 法二:使用吞吐量測試工具iperf測試,具體方法(略)預期參考值:;3.0最佳:下載120兆;上傳90兆註:可修改配置文件的max burstup,使值越大越好
⑦ 港口集裝箱吞吐量數據在哪查
港口集裝箱吞吐量數據每年港務局都有數據統計的,可以上港務局網站查詢。
港務局網站網址是:http://www.gzport.gov.cn/portal/site/site/portal/gzport/index.jsp,可進入此網址直接查詢所需要的吞吐量數據。
港口集裝箱吞吐量(Port handling capacity)是指1年間經水運輸出、輸入港區並經過裝卸作業的貨物總量,計量單位為「噸」或「標准箱(TEU)」表示,一個標准20英尺集裝箱為一個標准箱。港口集裝箱吞吐量,是反映港口生產經營活動成果的重要數量指標,港口集裝箱吞吐量的流向構成、數量構成和物理分類構成是港口在國際、地區間水上交通鏈中的地位、作用和影響的最直接體現,也是衡量國家、地區、城市建設和發展的量化參考依據。
⑧ 如何測試區域網的網速和數據吞吐量
尊敬的用戶您好:
網路速度慢最直接的原因就是帶寬不足或者線路有問題,可以通過CHARIOT測量網路中任意兩台計算機之間的連通帶寬,並且該軟體還可以將測量結果以圖形的形式表現出來,更方便我們比較和瀏覽。當然要想成功測量帶寬吞吐量的前提是需要這兩台計算機之間 有路由指引數據包的傳送方向。
中國電信提供最優質的網路通訊服務,老友換新機,網齡抵現金,百兆寬頻免費體驗,超清電視iTV,電信活動可以直接通過營業廳查詢。
⑨ 請幫忙,exchange 2003伺服器裡面的郵件並發量、吞吐量怎麼測試,或者利用什麼軟體可以監測出來。
Admin Report Kit for Exchange
Server (ARKES) is an Exchange Server Management and Reporting solution that
addresses the critical functions of auditing and reporting Exchange objects'
configuration settings, usage and security, and server configuration. Our
solution allows you to audit, track and monitor several hundreds of
configuration variables in your Exchange Server & Active Directory
network.
http://www.vyapin.com/procts/exchange-audit/exchange-server-reporting.htm
⑩ linux系統怎樣查看伺服器性能命令
通過執行以下命令,可以在1分鍾內對系統資源使用情況有個大致的了解。
uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top
其中一些命令需要安裝sysstat包,有一些由procps包提供。這些命令的輸出,有助於快速定位性能瓶頸,檢查出所有資源(CPU、內存、磁碟IO等)的利用率(utilization)、飽和度(saturation)和錯誤(error)度量,也就是所謂的USE方法。
下面我們來逐一介紹下這些命令,有關這些命令更多的參數和說明,請參照命令的手冊。
uptime
$ uptime
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
這個命令可以快速查看機器的負載情況。在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態為D)的數量。這些數據可以讓我們對系統資源使用有一個宏觀的了解。
命令的輸出分別表示1分鍾、5分鍾、15分鍾的平均負載情況。通過這三個數據,可以了解伺服器負載是在趨於緊張還是區域緩解。如果1分鍾平均負載很高,而15分鍾平均負載很低,說明伺服器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪裡。反之,如果15分鍾平均負載很高,1分鍾平均負載較低,則有可能是CPU資源緊張時刻已經過去。
上面例子中的輸出,可以看見最近1分鍾的平均負載非常高,且遠高於最近15分鍾負載,因此我們需要繼續排查當前系統中有什麼進程消耗了大量的資源。可以通過下文將會介紹的vmstat、mpstat等命令進一步排查。
dmesg | tail
$ dmesg | tail
[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request. Check SNMP counters.
該命令會輸出系統日誌的最後10行。示例中的輸出,可以看見一次內核的oom kill和一次TCP丟包。這些日誌可以幫助排查性能問題。千萬不要忘了這一步。
vmstat 1
$ vmstat 1
procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
34 0 0 200889792 73708 591828 0 0 0 5 6 10 96 1 3 0 0
32 0 0 200889920 73708 591860 0 0 0 592 13284 4282 98 1 1 0 0
32 0 0 200890112 73708 591860 0 0 0 0 9501 2154 99 1 0 0 0
32 0 0 200889568 73712 591856 0 0 0 48 11900 2459 99 0 0 0 0
32 0 0 200890208 73712 591860 0 0 0 0 15898 4840 98 1 1 0 0
^C
vmstat(8) 命令,每行會輸出一些系統核心指標,這些指標可以讓我們更詳細的了解系統狀態。後面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義,這幾介紹一些和性能調優相關的列:
r:等待在CPU資源的進程數。這個數據比平均負載更加能夠體現CPU負載情況,數據中不包含等待IO的進程。如果這個數值大於機器CPU核數,那麼機器的CPU資源已經飽和。
free:系統可用內存數(以千位元組為單位),如果剩餘內存不足,也會導致系統性能問題。下文介紹到的free命令,可以更詳細的了解系統內存的使用情況。
si, so:交換區寫入和讀取的數量。如果這個數據不為0,說明系統已經在使用交換區(swap),機器物理內存已經不足。
us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(內核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。
上述這些CPU時間,可以讓我們很快了解CPU是否出於繁忙狀態。一般情況下,如果用戶時間和系統時間相加非常大,CPU出於忙於執行指令。如果IO等待時間很長,那麼系統的瓶頸可能在磁碟IO。
示例命令的輸出可以看見,大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不一定是性能問題,需要結合r隊列,一起分析。
mpstat -P ALL 1
$ mpstat -P ALL 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
07:38:49 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:38:50 PM all 98.47 0.00 0.75 0.00 0.00 0.00 0.00 0.00 0.00 0.78
07:38:50 PM 0 96.04 0.00 2.97 0.00 0.00 0.00 0.00 0.00 0.00 0.99
07:38:50 PM 1 97.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00
07:38:50 PM 2 98.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00
07:38:50 PM 3 96.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.03
[...]
該命令可以顯示每個CPU的佔用情況,如果有一個CPU佔用率特別高,那麼有可能是一個單線程應用程序引起的。
pidstat 1
$ pidstat 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
07:41:02 PM UID PID %usr %system %guest %CPU CPU Command
07:41:03 PM 0 9 0.00 0.94 0.00 0.94 1 rcuos/0
07:41:03 PM 0 4214 5.66 5.66 0.00 11.32 15 mesos-slave
07:41:03 PM 0 4354 0.94 0.94 0.00 1.89 8 java
07:41:03 PM 0 6521 1596.23 1.89 0.00 1598.11 27 java
07:41:03 PM 0 6564 1571.70 7.55 0.00 1579.25 28 java
07:41:03 PM 60004 60154 0.94 4.72 0.00 5.66 9 pidstat
07:41:03 PM UID PID %usr %system %guest %CPU CPU Command
07:41:04 PM 0 4214 6.00 2.00 0.00 8.00 15 mesos-slave
07:41:04 PM 0 6521 1590.00 1.00 0.00 1591.00 27 java
07:41:04 PM 0 6564 1573.00 10.00 0.00 1583.00 28 java
07:41:04 PM 108 6718 1.00 0.00 0.00 1.00 0 snmp-pass
07:41:04 PM 60004 60154 1.00 4.00 0.00 5.00 9 pidstat
^C
pidstat命令輸出進程的CPU佔用率,該命令會持續輸出,並且不會覆蓋之前的數據,可以方便觀察系統動態。如上的輸出,可以看見兩個JAVA進程佔用了將近1600%的CPU時間,既消耗了大約16個CPU核心的運算資源。
iostat -xz 1
$ iostat -xz 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
73.96 0.00 3.73 0.03 0.06 22.21
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
xvda 0.00 0.23 0.21 0.18 4.52 2.08 34.37 0.00 9.98 13.80 5.42 2.44 0.09
xvdb 0.01 0.00 1.02 8.94 127.97 598.53 145.79 0.00 0.43 1.78 0.28 0.25 0.25
xvdc 0.01 0.00 1.02 8.86 127.79 595.94 146.50 0.00 0.45 1.82 0.30 0.27 0.26
dm-0 0.00 0.00 0.69 2.32 10.47 31.69 28.01 0.01 3.23 0.71 3.98 0.13 0.04
dm-1 0.00 0.00 0.00 0.94 0.01 3.78 8.00 0.33 345.84 0.04 346.81 0.01 0.00
dm-2 0.00 0.00 0.09 0.07 1.35 0.36 22.50 0.00 2.55 0.23 5.62 1.78 0.03
[...]
^C
iostat命令主要用於查看機器磁碟IO情況。該命令輸出的列,主要含義是:
r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千位元組)。讀寫量過大,可能會引起性能問題。
await:IO操作的平均等待時間,單位是毫秒。這是應用程序在和磁碟交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數值過大,可能是硬體設備遇到了瓶頸或者出現故障。
avgqu-sz:向設備發出的請求平均數量。如果這個數值大於1,可能是硬體設備已經飽和(部分前端硬體設備支持並行寫入)。
%util:設備利用率。這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬體設備已經飽和。
如果顯示的是邏輯設備的數據,那麼設備利用率不代表後端實際的硬體設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能。
free –m
$ free -m
total used free shared buffers cached
Mem: 245998 24545 221453 83 59 541
-/+ buffers/cache: 23944 222053
Swap: 0 0 0
free命令可以查看系統內存的使用情況,-m參數表示按照兆位元組展示。最後兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。需要注意的是,第二行-/+ buffers/cache,看上去緩存佔用了大量內存空間。這是Linux系統的內存使用策略,盡可能的利用內存,如果應用程序需要內存,這部分內存會立即被回收並分配給應用程序。因此,這部分內存一般也被當成是可用內存。
如果可用內存非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統性能。
sar -n DEV 1
$ sar -n DEV 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
12:16:48 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
12:16:49 AM eth0 18763.00 5032.00 20686.42 478.30 0.00 0.00 0.00 0.00
12:16:49 AM lo 14.00 14.00 1.36 1.36 0.00 0.00 0.00 0.00
12:16:49 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:16:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
12:16:50 AM eth0 19763.00 5101.00 21999.10 482.56 0.00 0.00 0.00 0.00
12:16:50 AM lo 20.00 20.00 3.25 3.25 0.00 0.00 0.00 0.00
12:16:50 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
^C
sar命令在這里可以查看網路設備的吞吐率。在排查性能問題時,可以通過網路設備的吞吐量,判斷網路設備是否已經飽和。如示例輸出中,eth0網卡設備,吞吐率大概在22 Mbytes/s,既176 Mbits/sec,沒有達到1Gbit/sec的硬體上限。
sar -n TCP,ETCP 1
$ sar -n TCP,ETCP 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
12:17:19 AM active/s passive/s iseg/s oseg/s
12:17:20 AM 1.00 0.00 10233.00 18846.00
12:17:19 AM atmptf/s estres/s retrans/s isegerr/s orsts/s
12:17:20 AM 0.00 0.00 0.00 0.00 0.00
12:17:20 AM active/s passive/s iseg/s oseg/s
12:17:21 AM 1.00 0.00 8359.00 6039.00
12:17:20 AM atmptf/s estres/s retrans/s isegerr/s orsts/s
12:17:21 AM 0.00 0.00 0.00 0.00 0.00
^C
sar命令在這里用於查看TCP連接狀態,其中包括:
active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;
passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;
retrans/s:每秒TCP重傳數量;
TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網路環境惡劣,或者伺服器壓力過大導致丟包。
top
$ top
top - 00:15:40 up 21:56, 1 user, load average: 31.09, 29.87, 29.92
Tasks: 871 total, 1 running, 868 sleeping, 0 stopped, 2 zombie
%Cpu(s): 96.8 us, 0.4 sy, 0.0 ni, 2.7 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 25190241+total, 24921688 used, 22698073+free, 60448 buffers
KiB Swap: 0 total, 0 used, 0 free. 554208 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20248 root 20 0 0.227t 0.012t 18748 S 3090 5.2 29812:58 java
4213 root 20 0 2722544 64640 44232 S 23.5 0.0 233:35.37 mesos-slave
66128 titancl+ 20 0 24344 2332 1172 R 1.0 0.0 0:00.07 top
5235 root 20 0 38.227g 547004 49996 S 0.7 0.2 2:02.74 java
4299 root 20 0 20.015g 2.682g 16836 S 0.3 1.1 33:14.42 java
1 root 20 0 33620 2920 1496 S 0.0 0.0 0:03.82 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:05.35 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:06.94 kworker/u256:0
8 root 20 0 0 0 0 S 0.0 0.0 2:38.05 rcu_sched
top命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統內存使用情況(free)、系統CPU使用情況(vmstat)等。因此通過這個命令,可以相對全面的查看系統負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內存佔用最多的進程、CPU佔用率最高的進程等。
但是,top命令相對於前面一些命令,輸出是一個瞬間值,如果不持續盯著,可能會錯過一些線索。這時可能需要暫停top命令刷新,來記錄和比對數據。
總結
排查Linux伺服器性能問題還有很多工具,上面介紹的一些命令,可以幫助我們快速的定位問題。例如前面的示例輸出,多個證據證明有JAVA進程佔用了大量CPU資源,之後的性能調優就可以針對應用程序進行。