2017-03-25 25 views
0

我有一個使用oracle數據庫的Java應用程序,運行在Apache Tomcat上。在正常的一天,Java應用程序運行良好。但是,流量每天增加一倍,應用開始遇到響應時間和超時的增加。加載Java應用程序的問題 - 如何複製?

之後,我們嘗試使用jmeter進行運行負載測試,測試的負載量相同,但從未遇到任何響應/超時問題。順便說一下,我們檢查了我們的網絡監測工具,沒有發現問題。

如果我想在測試過程中複製相同的問題,我可以檢查該找些什麼?複製這將有助於確保我們要做的更改能夠發揮作用。

謝謝!

+0

您的負載測試方案是否保存或更新數據庫中的數據?如果是,測試後數據庫中的已完成事務數是否等於虛擬用戶執行的播放迭代次數?或者你的方案只是從數據庫中選擇數據而不執行交易? –

+0

是的。測試場景將在數據庫中創建記錄,並且創建的記錄與場景匹配。 – HGW

+0

我正在查看實際日誌,看起來Java應用程序正在等待創建數據庫連接。我如何在負載中複製它?任何想法?謝謝! – HGW

回答

0

潛在的問題是:如何使負載測試足夠現實,以複製訪問生產環境中觀察到的數據庫時的慢度。我們評論交流中的思考過程是審查和排除或排除在負載測試中經常不適當模擬的因素,並導致過度樂觀的性能結果。我回顧了4個因素:

  1. 負載測試腳本是否正確地關聯了動態值?是的,因爲負載測試創建的記錄與場景匹配。如果情況並非如此,那麼在負載測試中失敗的交易將負責過快的響應。建議將手動關聯您的腳本。

  2. 負載測試腳本是否正確地模擬多個經過身份驗證的用戶?應用程序不需要登錄。如果情況並非如此,那麼使用單個用戶運行負載測試將無法測試維護多個用戶會話時的系統開銷。建議將使用具有多個證書的數據集來參數化記錄的證書。

  3. 負載測試腳本是否正確模擬通過cookie驗證的匿名用戶?應用程序不使用cookie認證。如果情況並非如此,那麼建議在錄製之前清除瀏覽器緩存,以確保未記錄過時的cookie,然後確保腳本中的cookie關聯配置正確。

  4. 負載測試腳本是否正確地模擬了記錄場景中的數據?假設測試場景記錄了一些用作數據庫查詢條件的用戶條目。如果您重複播放多個模擬同一條目的迭代,則由於應用程序或數據庫緩存的原因,數據庫可能不會被查找。如果是這種情況,則建議使用測試數據集對用戶條目進行參數化。

如果最後一個因素也不是這種情況,那麼還有更多因素要經過。有關相關性和參數化負載測試的更多信息,請查看此博客http://www.stresstimulus.com/blog/post/eradicating-load-testing-errors-1