性能測試缺陷分類(lèi)
1. 硬件
磁盤(pán)空間、CPU、IO讀寫(xiě)速率、內存
磁盤(pán)空間:磁盤(pán)空間不足導致系統運行變慢,文件、日志等無(wú)法生成存放導致的性能瓶頸;
CPU:CPU的核心功能是解釋計算機指令以及處理數據,性能主要體現在其運行程序的速度上。影響運行速度的性能指標包括工作頻率、Cache容量、指令系統和邏輯結構等參數;
IO讀寫(xiě)速率:即input和output,輸入和輸出,主要考慮數據處理時(shí)的讀寫(xiě)速度,頁(yè)交換等情況;
內存:所有的程序都是運行在內存中的,其作用是用于暫時(shí)存放CPU中的運算數據,以及與外部存儲器交換的數據,內存不足會(huì )限制程序的數據處理速度,因此這也是很重要的一項性能關(guān)注指標;
2. 網(wǎng)絡(luò )
帶寬、網(wǎng)絡(luò )波動(dòng)、CDN、延時(shí)、丟包
帶寬:高并發(fā)情況下,如果帶寬不足,可能會(huì )導致網(wǎng)絡(luò )資源競爭,超時(shí)等情況;
網(wǎng)絡(luò )波動(dòng):這里是從網(wǎng)絡(luò )的穩定性來(lái)描述,即性能測試的環(huán)境,需要一個(gè)穩定的網(wǎng)絡(luò )環(huán)境;
CDN:即內容分發(fā)服務(wù),有時(shí)候不同的CDN策略也會(huì )影響到“用戶(hù)”感知到的系統性能表現;
延時(shí):延時(shí)的值越大,對系統性能表現影響越大(比如格斗類(lèi)的PVP游戲),且性能測試的結果也存在更大的偏差;
丟包:數據在網(wǎng)絡(luò )上是以數據包的形式傳輸的,如果丟包,則可能造成報錯或異常的情況;
3. 應用
JVM、代碼邏輯
JVM
堆內存分配:根據系統硬件條件來(lái)進(jìn)行合理的堆內存分配,一般來(lái)說(shuō)JVM的堆內存分配不要超過(guò)系統內存的25%較好;
垃圾回收算法:JAVA的動(dòng)態(tài)垃圾回收機制,是基于不同的幾種回收算法來(lái)進(jìn)行的,根據具體的情況,選擇合適的垃圾回收策略;
OOM:即內存溢出(out of memory),這個(gè)算是性能測試中很常見(jiàn)的一個(gè)問(wèn)題,通常是由于代碼問(wèn)題造成的內存泄漏、GC不夠徹底、內存被耗盡引起;
代碼邏輯
常見(jiàn)的情況有不合理的線(xiàn)程引用和內存分配;
4. 配置
版本、底層配置、參數配置
版本:在性能測試過(guò)程中,一定要確保被測系統的版本和實(shí)際生產(chǎn)保持一致,否則由于版本不同帶來(lái)的些許差異可能會(huì )對性能測試帶來(lái)很大的偏差和影響;
底層配置:涉及到操作系統、服務(wù)器等硬件的一些配置方式不合理,帶來(lái)的性能瓶頸;
參數配置:系統架構設計中,各個(gè)不同的參數配置帶來(lái)的性能瓶頸;
5. 數據庫
索引、鎖、表空間、慢SQL
索引:索引的存在就像一個(gè)標簽目錄一樣,在執行數據庫操作時(shí)提供更為快速的執行效率,減少磁盤(pán)IO操作和執行的數據庫系統時(shí)間;
鎖:為了保證事務(wù)的原子性和隔離性,有了鎖的存在,但有時(shí)候由于某些原因造成的表鎖,也是性能瓶頸的一種表現;
表空間:不合理的表空間設計,導致的數據庫性能問(wèn)題;
慢SQL:慢SQL會(huì )導致數據庫操作時(shí)間變長(cháng),增加IO讀寫(xiě)以及引起一些列的資源競爭等問(wèn)題,常見(jiàn)的慢SQL原因如下(以MySQL為例):
數據量:對同一張表來(lái)說(shuō),1W條數據和1000W條數據,對其進(jìn)行操作時(shí)的性能表現也是不同的,因此在性能測試時(shí)對于數據的正確性可用性,以及數據量也是需要重點(diǎn)關(guān)注的
6. 中間件
超時(shí)、線(xiàn)程池、緩存策略、最大連接數、通信實(shí)現方式、負載均衡策略
超時(shí):設置合理的請求或響應超時(shí)時(shí)間,是很有必要的,這點(diǎn)要根據具體的業(yè)務(wù)場(chǎng)景和系統架構來(lái)考慮,具體的超時(shí)時(shí)間,建議進(jìn)行配置測試來(lái)設定;
線(xiàn)程池:線(xiàn)程池配置太小,很容易被使用完,太大的話(huà)又浪費資源,合理的線(xiàn)程池,建議進(jìn)行配置測試來(lái)確定;
緩存策略:緩存的優(yōu)點(diǎn)是減少請求響應過(guò)程中的傳輸時(shí)間,但有時(shí)候在高并發(fā)情況下,緩存很容易失效而導致緩存穿透,瞬間對服務(wù)端帶來(lái)很大的壓力;
最大連接數:關(guān)于連接數,合理的連接數配置是很重要的,否則連接數太少容易導致隊列等待、超時(shí),連接數太多則浪費了系統資源;
通信實(shí)現方式:同步(sync)和異步(Async);
負載均衡策略:現在很多的系統都進(jìn)行了服務(wù)集群,隨之而來(lái)的就是負載均衡策略的實(shí)現,如果負載均衡不夠“均衡”,在大數量的沖擊下,容易導致某些服務(wù)的異;蛘邟炱。
本文內容不用于商業(yè)目的,如涉及知識產(chǎn)權問(wèn)題,請權利人聯(lián)系51Testing小編(021-64471599-8017),我們將立即處理