天天看點

jmeter常用的監聽器

jmeter常用的監聽器

jp@gc - Bytes Throughput Over Time:不同時間吞吐量展示(圖表) 

聚合報告裡,Throughput是按請求個數來展示的,比如說1.9/sec,就是每s發送1.9個請求;而這裡的展示是按位元組Bytes來展示的圖表

jp@gc - Composite Graph: 混合圖表 

在它的Graphs裡面可以設定多少個圖表一起展示,它可以同時展示多個圖表

jp@gc - Hits per Second:每秒點選量

jp@gc - PerfMon Metrics Collector:伺服器性能監測控件,包括CPU,Memory,Network,I/O等等

jp@gc - Reponse Latencies Over Time:記錄用戶端發送請求完成後,伺服器端傳回請求之前這段時間

jp@gc - Reponse Times Distribution: 顯示測試的響應時間分布,X軸顯示由時間間隔分組的響應時間,Y軸包含每個區間的樣本數

jp@gc - Transactions per Second: 每秒事務數,伺服器每秒處理的事務數

jp@gc - Reponse Times vs Threads:展示事務響應時間與虛拟使用者數之前的對應關系

伺服器性能分析:

cpu:

CPU 在作業系統中是運作的根本,CPU的執行速度與性能好壞在很大程度上決定了系統整體的性能的快慢,最開始大部分任務是單線程排程,CPU在同一時間内隻能運作一個線程,但随着多處理器技術的成熟,軟體架構的深入和複雜度的提升,單處理系統元件在往多處理系統轉變,這些都是利用處理器的多核心處理能力的特性來提升系統性能.在做系統性能分析前,首先我們要了解系統處理器的情況,如邏輯處理器,處理器型号,主頻率,cache大小,是否支援超線程技術等資訊,在知道這些的情況下,才能更好地進行我們系統的性能分析.

除此之外,CPU的使用率也是我們需要關注的很重要名額,當CPU處于滿載狀态時,很多時候我們要結合系統附帶的一些系統監控分析工具,檢查相關的系統日志,web伺服器日志,DB日志等,結合輔助一些指令如top,free,uptime,sar等輔助分析為什麼系統CPU會被完全占用,以及後續的解決優化方案.

memery:記憶體

在系統性能因素中,記憶體大小也是影響系統性能的一個非常核心的名額,當可用的記憶體太小,系統程序會被阻塞中,應用也将會變得非常緩慢,有時候會失去響應,嚴重的甚至可能會觸發系統的OOM(記憶體溢出)進而引發應用程式被系統給殺死,更嚴重的情況可能會引起系統重新開機;當機器的記憶體太大的時候,有時候也是一種浪費,這時候我們可以考慮做一些緩存服務去提升系統性能.

虛拟記憶體也是在記憶體裡面我們需要考慮的性能名額,在系統設計中,當系統的實體記憶體不夠用的時候,就需要将實體記憶體中的一部分空間釋放出來,以供目前運作的程式使用.那些被釋放的空間可能來自一些長時間沒什麼操作的程式,這些被釋放的空間被臨時儲存到虛拟記憶體空間中,等到那些程式要運作時,再從虛拟記憶體中恢複儲存的資料到實體記憶體中.這樣,系統總是在實體記憶體不夠時,才進行記憶體之間的交換,有時可以越過系統性能瓶頸,節省系統更新費用.在做性能分析的時候,我們也要考慮系統有無設定虛拟記憶體,以及虛拟記憶體的使用情況.

記憶體分析

Mem:232600k,total 實體記憶體總量
Mem:224688k,used 使用的實體記憶體總量
Mem:7912k,free 空閑記憶體總量
Mem:8508k,buffers 用作核心緩存的記憶體量
Mem:46264,cached 緩沖的交換區總量
Swap:209714k,total 交換區總量
Swap:62052k,used 使用的交換區總量
Swap:2035092k,free 空閑的交換區總量

swap:交換分區

DIsks I/O:硬碟

通路應用離不開系統的磁盤資料的讀寫,I/O讀寫的性能直接會影響系統程式的性能.讀寫的性能直接會影響系統程式的性能,磁盤I/O系統是系統中最慢的部分.I/O比較頻繁的時候,如果I/O得不到滿足會導緻應用阻塞.針對I/O的場景模型,我們要考慮的有I/O的TPS,平均I/O資料,平均隊列長度,平均服務時間,平均等待時間,IO使用率等名額.

network I/O :網絡

系統應用之間的互動,尤其是跨機器之間的,都是要基于網絡的,是以網絡寬帶,響應時間,網絡延時,阻塞等都是影響系統性能的因素.假如應用在不穩定和不安全的網絡下會導緻應用程式的逾時,丢棄,阻塞,波動率大,這些在系統中都是不能接受的.我們需要一個可靠的,穩定的,能滿足我們應用程式在機器之間暢通無阻地運作,這些需要測試工程師,網絡管理者,系統管理者等一起合作把系統的網絡完善.

在系統中,我們要考慮對應的網絡是否可達,防火牆是否開啟,端口通路,帶寬是否有被限制,路由的尋址,網絡的延時等問題.

TCP:一種網絡傳輸協定

JMX:

EXEC:

TALL:

子產品 類型 度量方式 衡量标準
CPU 使用情況

1.vmstat 統計l-id 的計數

2.sar-u 統計l-%idle的計數

3.dstat指令 統計 l-idl的計數

4.mpstat-PALL 統計 l-%idle的計數

5.ps指令統計cpu的計數

注意≥50%

告警≥70%

嚴重≥90%

CPU 滿載

6.vmstat 的 r 計數 >CPU邏輯順數

7.sar –q,”runq-sz”>CPU邏輯順數

8.dstat –p,”run”>CPU邏輯順數

運作的隊列大于1時,證明已經有一定的負載了,不過這個計數也不絕對,需進一步分析其他的資源情況來斷定CPU是否已滿載負荷運作
CPU 錯誤 9.通過perf工具去捕獲處理器的錯誤資訊,需處理器支援 需處理支援
記憶體 使用情況

1.free指令檢視使用情況

2.vmstat指令檢視使用情況

3.sar-r指令檢視使用情況

4.ps指令檢視使用情況

注意≥50%

告警≥70%

嚴重≥90%

記憶體 滿載

5.vmstat的 si/so 比例輔助swapd 和free 利用

6.sar-W 檢視每次缺頁數

7.檢視核心日志有無OOM 機制kill 程序

8.dmesg|grep killed

1.so數值大,且swapd已經占比很高,記憶體肯定已經飽和

2.sar指令次缺頁多意味已經在不停地和swap打交道,證明記憶體已經飽和

3.當記憶體不夠用會觸發核心的OOM機制

記憶體 錯誤

9.檢視内有無physical failures

10.通過工具如valgrind 等進行檢查

有計數
網絡 使用情況

1.sar –n DEV 的收發計數大于網卡上限

2.ifconfig RX/TX 寬帶超過網卡上限

3.cat/proc/net/dev/ 的速率超過上限

4.nicstat的util 基本滿負荷

1.收發包的吞吐速率達到網卡上限

2.有延遲

3.有丢包

4.有阻塞

網絡 滿載

5.ifconfig dropped 有計數

6.nestat-s”segments retransimted”有計數

7.sar-n EDEV rxdrop txdrop 有計數

統計的丢包有計數證明已滿載了
IO 使用情況

1.iostat –xz,”%util”

2.sar-d,”%util”

3.iotop的使用率很高

4.cat/proc/pid/sched|grep jowait

注意≥50%

告警≥70%

嚴重≥90%

IO 滿載

5.iostat –xnzl,”avgqu-sz”>1

6.iostat await>70

IO 已經有滿載嫌疑
IO 錯誤

7.dmesg 檢視io錯誤

8.smartctl/dev/sda

有資訊

系統負載監控分析實踐

uptime指令:主要用于擷取主機運作時間和查詢Linux系統負載等資訊,uptime指令可以顯示系統已經運作了多長時間,以及有多少使用者登入,快速擷取伺服器的負荷情況,它資訊顯示依次為:現在時間,系統已經運作了多長時間,目前有多少登入使用者,系統在過去的1分鐘,5分鐘,15分鐘内的平均負載.

1.uptime的系統存活時間越長,意味着系統穩定,我們可以通過uptime檢視系統這一段時間有無重新開機,這也是一種常見分析系統是否穩定的指令

2.通過uptime指令可以得知目前有多少登入使用者,但相對來說w指令會更好地顯示目前登入使用者數的資訊.

3.一般系統建議每個CPU核心的目前活動程序數量最好不要大于0.8,證明系統是空閑的,大于1且不小于3的時候,如果系統的其他資源很正常,那麼系統的性能也可以接受的.但如果任務數大于5的話,那證明系統性能有問題了.以一個四核CPU的主機為例,當uptime的輸出結果超過15,那就意味着目前系統負載非常嚴重,需要分析目前的程序排程政策,是否有阻塞等,估計此時可能打開運作腳本都會非常緩慢的.

4.系統負載的3個值表示的是系統過去的1分鐘,5分鐘,15分鐘的一個平均值.通過這3個值的資訊,我們 可以分析出系統負載的趨勢:是否增加,穩固,降低等.

Linux系統性能分析思路和實踐

負載uptime指令

CPU top指令

Windows 系統性能分析思路和實踐

性能螢幕綜述:

perfmon 進入性能螢幕

中間件Tomcat 監控 Probe

監控項

類别 計數器 描述
tomcat JVM 記憶體 關注GC 回收頻率,Full GC 次數越少越好
最大線程數 線程池連接配接數長期大80%以上,建議優化
資料庫連接配接數 活動連接配接數長期大于80%以上,建議優化連接配接池

請求數

請求狀态

線程數,線程狀态,大量 Blocked 狀态線程可以 Dump 線程棧資訊進行分析

性能調優常用手段:

1.空間換時間,記憶體,緩存就是典型的空間換時間的例子.利用記憶體緩存從磁盤上取出的資料,CPU請求資料直接 從記憶體中擷取,進而擷取比從磁盤讀取資料更高的效率

2.時間換空間:當空間成為瓶頸時,切分資料分批次處理,用更少的空間完成任務處理.上傳大附件時經常用這種方式.

3.分而治之:把任務切分,分開執行,也友善并行執行來提高效率.

4.異步處理:業務鍊路上有任務時間消耗較長,可以拆分業務,減少阻塞影響.常見的異步處理機制有MQ(消息隊列),目前在網際網路應用中大量使用.

5.并行:用多個程序或者線程同時處理業務,縮短業務處理時間,比如我們在銀行辦理業務時,如果排隊人數較多時,銀行會加開櫃台.

6.離使用者更近一些:比如CDN技術,把使用者的靜态資源放在離使用者更近的地方.

7.一切可擴充:業務子產品化,服務化,良好的水準擴充能力.

分布式架構的運用給性能帶來了革命性的提升,業務流程的調整也會顯著提升系統性能,單系統的調優能夠壓榨出更高的處理能力.

系統的發展:

單體--à叢集--à分布式--à分布式叢集

單機性能分析與調優

用戶端--à應用伺服器--à資料庫

我們的服務運作在中間件上,中間件與DB運作在作業系統上,作業系統來管理計算機硬體裝置(CPU,記憶體,磁盤,網卡等裝置).

單機性能分析流程:

Client:用戶端

Load Machine:負載生成器—模拟使用者負載

webserver:提供Web服務的伺服器,即我們通路的web頁面由此伺服器提供服務;一般部署在Nginx,Apache等中間件上.

Middleware:中間件,比如Tomcat,Jboss,WebLogic等

OS:作業系統

System Resource:系統資源

APPserver:應用伺服器,實作業務邏輯

DB:資料庫伺服器

配置優化:

JVM配置優化

連接配接池:

連接配接池配置參數

連接配接池配置多少連接配接合适

監控連接配接池

線程池:

緩存機制: