1. 我們該如何去判斷伺服器的性能呢
伺服器的性能新能判定可以考慮從以下幾點來看看:
1、伺服器的處理器,包括CPU型號和核心數
伺服器的處理器決定伺服器的運算速度,因此,對於伺服器選取應該根據具體的業務場景來選取,處理運算能力越強的伺服器對應的價格也是越來越貴。選取時候可以根據業務實際環境需求,先選擇能差不多滿足的就好,後續有需求在升級配置就可,現在伺服器中彈性雲伺服器就非常針對性滿足這類需求。
2、伺服器的內存
伺服器內存大小決定著多負載多任務的處理能力,可以適當結合實際情況選取
3、伺服器的寬頻
寬頻大小影響這站點內容的下載速度與在考慮儲存分離時候【將樣式文件、圖片、css等放在對象存儲服務 OBS中的時候可以適當降低在伺服器的寬頻大小】
考慮到業務成長性,可以考慮直接以伺服器+對象儲存服務+雲資料庫+CDN模式,增強業務容災能力和用戶體驗
2. 怎麼 檢查是否伺服器性能過差
1遠程進入伺服器,打開
任務管理器
,檢查程序正常運行情況下的CPU和內存使用情況。是否一直處於90%以上。
2.通過硬體檢查軟體
檢查CPU,內存,硬碟等硬體是否正常。
3.觀察伺服器的帶寬使用情況,看帶寬是否跑滿。峰值是否跑高。
3. 怎麼判斷伺服器的性能
Windows伺服器中自帶的性能監控工具叫做Performance Monitor,
在開始-運行中輸入『perfmon』,然後回車即可運行。Performance
Monitor本身也是一個進程,運行起來也要佔用一定的系統資源。所以你看到的資源的使用量應該比實際的要稍微高一點。這個工具在幫助管理員判斷系統性能瓶頸時非常有用。舉個列子來說,今天有個用戶抱怨說他們項目組的伺服器(這是一台虛擬機)運行起來非常慢,但也不知道具體問題出在什麼地方。任務管理器里顯示CPU和內存的使用量都不算高,但伺服器的相應就是非常慢。打開Performance
Monitor,讓其運行一段時間後(因為參考平均值會比較准確),發現average disk
queue的值比較高,這就說明物理伺服器的硬碟負荷太重,I/O操作的速度跟不上系統的要求。關掉虛擬機,將其轉移到另一台硬碟負載比較小的主機上,再打開虛擬機。問題就解決了!
這里我簡單列舉幾個常用參數的參考值,需要更多的信息你可以google一把。
CPU:
% Processor Time:表示CPU的使用率,如果值大於80表示CPU的處理調度能力偏低。
硬碟:
% Disk Time:表示硬碟的I/O操作的頻率(繁忙時間),如果值大於80表示硬碟I/O調度能力偏低。
Average Disk Queue
Length:表示硬碟I/O操作等待隊列的長度,如果值大於2表示硬碟I/O調度能力偏低。
內存
Pages/Sec:表示系統對虛擬內存每秒鍾的訪問次數,如果值大於20表示有內存方面的問題。(有可能是物理內存偏低,也有可能是虛擬內存沒有配置正確。一般情況下虛擬內存應為物理內存的1.5-2倍)
Committed Bytes and Available Bytes:Committed
Bytes表示虛擬內存的大小,Available Bytes表示剩餘可用內存的大小。正常情況下,Available
Bytes減少,pages(頁面數)應該增加,提供頁面交換。如果Available
Bytes的值很小表示物理內存偏低。當關閉一些應用以後,Committed Bytes應該減少,Available
Bytes應該增加。因為關閉的進程釋放了之前佔用的內存資源。如果相應的值沒有發生變化,那麼該進程就可能造成了內存泄漏。
Cache Bytes:表示系統緩存的大小。如果值大於4M表示物理內存偏低。
1、uptime命令
這個命令可以快速查看機器的負載情況。
2、dmesg命令
該命令會輸出系統日誌的最後10行。
3、vmstat命令
vmstat(8) 命令,每行會輸出一些系統核心指標,這些指標可以讓我們更詳細的了解系統狀態。
4、mpstat命令
該命令可以顯示每個CPU的佔用情況。
5、pidstat命令
pidstat命令輸出進程的CPU佔用率。
6、iostat命令
7、free命令
free命令可以查看系統內存的使用情況,
8、sar命令
sar命令在這里可以查看網路設備的吞吐率。
9、top命令
包含了前面好幾個命令的檢查的內容。
5. 如何在Windows伺服器做性能測試
一、遠程連接到Windows伺服器,使用windows系統自帶工具進行收集性能數據
1、Windows伺服器中自帶的性能監控工具叫做Performance Monitor,在開始-運行中輸入『Perfmon.msc』,然後回車即可運行。通過界面,控制面板所有控制面板項管理工具性能監視器也能打開
5、用EXCEL將數據轉換為折線圖,並分析性能情況
二、分析性能情況
(1)內存泄露判斷
●虛擬內存位元組數(VirtualBytes)應該遠大於工作集位元組數(Workingset),如果兩者變化規律相反,比如說工作集增長較快,虛擬內存增長較少,則可能說明出現了內存泄露的情況。
●對於Workingset、Private Bytes、Availablebytes這些計數器,如果在測試期間內數值持續增長,而且測試停止後位置在高水平,則也說明存在內存泄露。
●Windows資源監控中,如果ProcessPrivateBytes計數器和ProcessWorkingSet計數器的值在長時間內持續升高,同時MemoryAvailable
bytes計數器的值持續降低,則很可能存在內存泄漏。
(2)CPU使用情況
●一般平均不要超過70%,最大不要超過90%(好:70% 、壞:85%、 很差:90%)
(3)tps(每秒處理事務的數量,在SOAPUI中進行統計)
●一般在10-100,不同應用程序具體值不同
1234567891011121314151617
幾個常用參數的參考值:CPU:% ProcessorTime:表示CPU的使用率,如果值大於80表示CPU的處理調度能力偏低。硬碟:% DiskTime:表示硬碟的I/O操作的頻率(繁忙時間),如果值大於80表示硬碟I/O調度能力偏低。Average Disk QueueLength:表示硬碟I/O操作等待隊列的長度,如果值大於2表示硬碟I/O調度能力偏低。內存Pages/Sec:表示系統對虛擬內存每秒鍾的訪問次數,如果值大於20表示有內存方面的問題。(有可能是物理內存偏低,也有可能是虛擬內存沒有配置正確。一般情況下虛擬內存應為物理內存的1.5-2倍)CommittedBytesandAvailable Bytes:CommittedBytes表示虛擬內存的大小,Available Bytes表示剩餘可用內存的大小。正常情況下,Available Bytes減少,pages(頁面數)應該增加,提供頁面交換。<br>如果Available Bytes的值很小表示物理內存偏低。當關閉一些應用以後,CommittedBytes應該減少,Available Bytes應該增加。因為關閉的進程釋放了之前佔用的內存資源。如果相應的值沒有發生變化,那麼該進程就可能造成了內存泄漏。Cache Bytes:表示系統緩存的大小。如果值大於4M表示物理內存偏低。
三、關於計數器的選擇
perfmon的計數器主要分四種:處理器性能計數器、內存性能計數器、磁碟性能計數器以及網路性能計數器。
以下為監控伺服器常用的計數器:
常用的性能對象與指標
性能對象
計數器
提供的信息
Processor
% Idle Time
% Idle Time 是處理器在采樣期間空閑的時間的百分比
Processor
% Processor Time
% Processor Time 指處理器用來執行非閑置線程時間的百分比。計算方法是,測量範例間隔內非閑置線程活動的時間,用範例間隔減去該值。這個計數器是處理器活動的主要說明器,顯示在範例間隔時所觀察的繁忙時間平均百分比。
Processor
% User Time
% User Time 指處理器處於用戶模式的時間百分比。用戶模式是為應用程序、環境分系統和整數分系統設計的有限處理模式。
Memory
Available Bytes
Available Bytes顯示出當前空閑的物理內存總量。當這個數值變小時,Windows開始頻繁地調用磁碟頁面文件。如果這個數值很小,例如小於5 MB,系統會將大部分時間消耗在操作頁面文件上。
Memory
% Committed Bytes in Use
% Committed Bytes In Use 是 Memory: Committed Bytes 與Memory: Commit Limit之間的比值。(Committed memory指如果需要寫入磁碟時已在分頁文件中保留空間的處於使用中的物理內存。Commit Limit是由分頁文件的大小而決定的。如果擴大了分頁文件,該比例就會減小)。這個計數器只顯示當前百分比;而不是一個平均值。
Memory
Page Faults/sec
Page Faults/sec是指處理器處理錯誤頁的綜合速率。用錯誤頁數/秒來計算。當處理器請求一個不在其工作集(在物理內存中的空間)內的代碼或數據時出現的頁錯誤。這個計數器包括硬錯誤(那些需要磁碟訪問的)和軟錯誤(在物理內存的其它地方找到的錯誤頁)。許多處理器可以在有大量軟錯誤的情況下繼續操作。但是,硬錯誤可以導致明顯的拖延。這個計數器顯示用上兩個實例中觀察到的值之間的差除以實例間隔的持續時間所得的值。
Network Interface
Bytes Total/sec
Bytes Total/sec是發送和接收位元組的速率,包括幀字元在內。
Network Interface
Packets/sec
Packets/sec為發送和接收數據包的速率。
Physical Disk
% Busy Time
% Busy Time指磁碟驅動器忙於為讀或寫入請求提供服務所用的時間的百分比。
Physical Disk
Avg. Disk Queue Length
Avg. Disk Queue Length 指讀取和寫入請求(為所選磁碟在實例間隔中列隊的)的平均數。
Physical Disk
Current Disk Queue Length
Current Disk Queue Length指在收集操作數據時在磁碟上未完成的請求的數目。它包括在快照內存時正在為其提供服務中的請求。這是一個即時長度而非一定間隔時間的平均值。多主軸磁碟設備可以一次有多個請求操作,但是其它同時發生的請求為等候服務。這個計數器可能會反映一個暫時的高或低的列隊長度,但是如果在磁碟驅動器存在持續負載,可能值會總是很高。請求等待時間與這個列隊的長度減去磁碟上的主軸成正比。這個差值應小於2才能保持良好的性能。
Logical
Disk
% Free Space
% Free Space 是所選定的邏輯磁碟驅動器上總的可用空閑空間的百分比。
Logical
Disk
Free Megabytes
可用的 MB 顯示磁碟驅動器上尚未分配的空間。
以下為監控進程常用的計數器:
Process對象的主要指標
性能對象
計數器
提供的信息
Process
% Privileged Time
% Privileged Time 是在特權模式下處理線程執行代碼所花時間的百分比。當調用 Windows 系統服務時,此服務經常在特權模式運行,以便獲取對系統專有數據的訪問。在用戶模式執行的線程無法訪問這些數據。對系統的調用可以是直接的(explicit)或間接的(implicit),例如頁面錯誤或間隔。
Process
% Processor Time
% Processor Time 是所有進程線程使用處理器執行指令所花的時間百分比。指令是計算機執行的基礎單位。線程是執行指令的對象,進程是程序運行時創建的對象。此計數包括處理某些硬體間隔和陷阱條件所執行的代碼。
Process
% User Time
% User Time 指處理線程用於執行使用用戶模式的代碼的時間的百分比。應用程序、環境分系統和集合分系統是以用戶模式執行的。Windows 的可執行程序、內核和設備驅動程序不會被以用戶模式執行的代碼損壞。
Process
Creating Process ID value
Creating Process ID value 指創建該進程的父進程號。
Process
Elapsed Time
該進程運行的總時間(用秒計算)。
Process
Handle Count
由這個處理現在打開的句柄總數。這個數字等於這個處理中每個線程當前打開的句柄的總數。
Process
ID Process
ID Process 指這個處理的特別的識別符。ID Process 號可重復使用,所以這些 ID Process 號只能在一個處理的壽命期內識別那個處理。
Process
IO Data Bytes/sec
處理從 I/O 操作讀取/寫入位元組的速度。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Data Operations/sec
本處理進行讀取/寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Other Bytes/sec
處理給不包括數據的 I/O 操作(如控制操作)位元組的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Other Operations/sec
本處理進行非讀取/寫入 I/O 操作的速率。例如,控制性能。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Read Bytes/sec
處理從 I/O 操作讀取位元組的速度。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Read Operations/sec
本處理進行讀取 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
IO Write Bytes/sec
處理從 I/O 操作寫入位元組的速度。這個計數器為所有由本處理產生的包括文件、網路和設備。
Process
IO Write Operations/sec
本處理進行寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網路和設備 I/O 的活動計數。
Process
Page Faults/sec
Page Faults/sec 指在這個進程中執行線程造成的頁面錯誤出現的速度。當線程引用了不在主內存工作集中的虛擬內存頁即會出現 Page Fault。如果它在備用表中(即已經在主內存中)或另一個共享頁的處理正在使用它,就會引起無法從磁碟中獲取頁。
Process
Page File Bytes
Page File Bytes 指這個處理在 Paging file 中使用的最大位元組數。Paging File 用於存儲不包含在其他文件中的由處理使用的內存頁。Paging File 由所有處理共享,並且 Paging File 空間不足會防止其他處理分配內存。
Process
Page File Bytes Peak
Page File Bytes Peak 指這個處理在 Paging files 中使用的最大數量的位元組。
Process
Pool Nonpaged Bytes
Pool Nonpaged Bytes 指在非分頁池中的位元組數,非分頁池是指系統內存(操作系統使用的物理內存)中可供對象(指那些在不處於使用時不可以寫入磁碟上而且只要分派過就必須保留在物理內存中的對象)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。
Process
Pool Paged Bytes
Pool Paged Bytes 指在分頁池中的位元組數,分頁池是系統內存(操作系統使用的物理內存)中可供對象(在不處於使用時可以寫入磁碟的)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。
Process
Priority Base
這次處理的當前基本優先權。在一個處理中的線程可以根據處理的基本優先權提高或降低自己的基本優先權。
Process
Private Bytes
Private Bytes 指這個處理不能與其他處理共享的、已分配的當前位元組數。
Process
Thread Count
在這次處理中正在活動的線程數目。指令是在一台處理器中基本的執行單位,線程是指執行指令的對象。每個運行處理至少有一個線程。
Process
Virtual Bytes
Virtual Bytes 指處理使用的虛擬地址空間的以位元組數顯示的當前大小。使用虛擬地址空間不一定是指對磁碟或主內存頁的相應的使用。虛擬空間是有限的,可能會限制處理載入資料庫的能力。
Process
Virtual Bytes Peak
Virtual Bytes Peak 指在任何時間內該處理使用的虛擬地址空間位元組的最大數。
Process
Working Set
Working Set 指這個處理的 Working Set 中的當前位元組數。Working Set 是在處理中被線程最近觸到的那個內存頁集。如果計算機上的可用內存處於閾值以上,即使頁不在使用中,也會留在一個處理的 Working Set中。當可用內存降到閾值以下,將從 Working Set 中刪除頁。如果需要頁時,它會在離開主內存前軟故障返回到 Working Set 中。
Process
Working Set Peak
Working Set Peak 指在任何時間這個在處理的 Working Set 的最大位元組數。