性能測試關注指標


一、接口請求響應指標

重點關注以下幾個指標:

  • 需滿足的並發數
  • TPS(每秒處理事務的能力)
  • 響應時間(平均響應時間、90%響應時間)
  • 錯誤率

性能測試指標通過標准

需滿足的並發數
(舉例:每天8W用戶訪問,平均在線時長10分鍾,1天用戶24小時內使用系統)
C = 80000 * 0.166/24=553
注:0.166為10/60得出

C = nL/T
C^= C + 3*根號C 
其中C為平均並發用戶數,n為login session的數量,L是login session的平均長度,T是值考察的時間長度
C^為並發用戶數峰值

需滿足的TPS
TPS = (80000*80%)/(20%*8*60*60)=11/sec

據二八原則:
20%常用時間,滿足80%業務量
TPS = n*80%/(20%*活躍時間*60*60)
注:活躍時間一般為8小時

響應時間

根據在並發情況下的響應時間2/5/10原則,最長不能超過10s

錯誤率

具體系統具體要求,一般小於萬分之一

緩存命中率

具體系統具體要求,一般大於85%通過

CPU占用率

70% 好,85% 壞,90%+ 很差

內存使用率

一般小於80%通過

 

二、服務器性能指標

重點關注以下幾個指標:

  • 線程對cpu占用(關注)
  • 對內存占用(關注)
  • 磁盤I/O
  • 網絡情況

 

性能項

資源

評價

CPU占用率

70%

85%

90%+

很差

磁盤I/0

<30%

<40%

<50%+

很差

網絡

<30%帶寬

運行隊列

<2*CPU數量

內存

沒有頁交換

每個CPU每秒10個頁交換

更多的頁交換

很差

使用命令查看CPU、內存變化情況:

top -b -d 1 -p 27854 > 0904log

p是進程號  ,d是1秒收集一次,要用root用戶(sudo su -)

查看進程號 ps ef |grep acs-job  若重啟服務器后,pid會發生變化,必須重新獲取

 

三、SQLServer數據庫查詢慢語句(需數據庫管理員權限)

--總耗CPU最多的前20個SQL:
SELECT TOP 20
    total_worker_time/1000 AS [總消耗CPU 時間(ms)],execution_count [運行次數],
    qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 時間(ms)],
    last_execution_time AS [最后一次執行時間],max_worker_time /1000 AS [最大執行時間(ms)],
    SUBSTRING(qt.text,qs.statement_start_offset/2+1, 
        (CASE WHEN qs.statement_end_offset = -1 
        THEN DATALENGTH(qt.text) 
        ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1) 
    AS [使用CPU的語法], qt.text [完整語法],
    qt.dbid, dbname=db_name(qt.dbid),
    qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH(nolock)
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1
ORDER BY  total_worker_time DESC


--平均耗CPU最多的前20個SQL:
SELECT TOP 20
    total_worker_time/1000 AS [總消耗CPU 時間(ms)],execution_count [運行次數],
    qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 時間(ms)],
    last_execution_time AS [最后一次執行時間],min_worker_time /1000 AS [最小執行時間(ms)],
    max_worker_time /1000 AS [最大執行時間(ms)],
    SUBSTRING(qt.text,qs.statement_start_offset/2+1, 
        (CASE WHEN qs.statement_end_offset = -1 
        THEN DATALENGTH(qt.text) 
        ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1) 
    AS [使用CPU的語法], qt.text [完整語法],
    qt.dbid, dbname=db_name(qt.dbid),
    qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH(nolock)
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE  execution_count>1
ORDER BY (qs.total_worker_time/qs.execution_count/1000) DESC

 

四、mysql慢查詢相關命令

-- 檢查慢查詢命令是否開啟

show variables like '%query';

 

-- 查看慢查詢命令

select * from mysql.slow_log;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM