真實性能測試案例之性能分析與報告


今天主要跟大家分享一個曾經所做的真實性能測試的案例,主要為其中性能測試分析報告過程部分,希望能對你以后怎么做性能分析和報告有所幫助。這個案例的測試目的為:在線考試為“XX平台”中的一個重要模塊,根據目前業務的需要,需要測試在線考試能否支持100的並發量。

一、場景描述

采取逐步增加用戶數(每10分鍾增加用戶數20人)對在線考試進行並發操作,達到100人為止;當並發數達到100后則繼續運行一段時間(30分鍾)。

二、測試環境配置

1、測試服務器配置

測試配置
經前面多輪配置測試及計數器觀察分析(考試只為系統性能測試的一個塊,前面還有做其它模塊的性能測試。當然如果單獨測考試系統,也應根據測試結果數據去進行參數調優。),最后確認程序、tomcat、JVM及MySQL最佳參數配置如下:2、服務器軟件配置

程序參數設置

jdbc.minPoolSize=50

jdbc.maxPoolSize=1500

jdbc.initialPoolSize=50

jdbc.maxIdleTime=60

tomcat server.xml參數配配置

 

maxThreads="1000" minSpareThreads="25" maxSpareThreads="75"  maxIdleTime="60000" />

 

maxKeepAliveRequests="1" redirectPort="443"  />

JVM參數配置:

-XX:PermSize=64M

-XX:MaxPermSize=128m

-Xms512m

-Xmx1024m

MYSQL參數配置:

max_connections=1500

thread_cache_size=128

back_log=200

三、測試結果分析

1、當並發數為60后,發生500服務器錯誤,通過計數器監控檢查為數據庫連接數達到最大值1499

1)並發數與服務器出現錯誤的關系視圖

並發出錯
2)數據庫線程連接數與出現錯誤的關系視圖

數據庫連接數
通過上面兩圖表分析:
在並發數逐步加大過程中發生瓶頸,瓶頸原因為數據庫線程連接數達到飽和值1499。

2、調整MYSQL的max_connections=11500后進行測試

調整參數后仍發現mysql的線程數達到1499后就不能繼續上升了。確認原因:windows32位系統,一個進程中可用的內存空間只有2G,而默認情況下一個線程的棧要預留1M的內存空間,所以理論上一個進程中最多可以開2048個線程,但是內存不可能完全拿來作線程的棧,所以實際數目要比這個值要小。所以1499則為該測試環境的線程數峰值。

3、根據前面壓力結果,調整並發數為40進行測試

發現當提交試卷數達到1300左右時,數據線程仍然達到1499,最后再次提交試卷發生服務器500錯誤。都是在發現錯誤后停止測試(並發40時是一發現500錯誤現象則停止運行,所以失敗數為1),考試流程各事務通過量統計情況如表:

測試結果
根據上表分析:當短時間內(如30分鍾),學生考試提交的試卷次數超過1300左右,當其它學生提交試卷時或進行其它與數據庫相關操作時,會出現服務器500錯誤。


免責聲明!

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



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