2013-03-05 77 views
3

我正在嘗試對我的Spring RESTful Web服務進行壓力測試。瞭解REST風格的Web服務壓力測試結果

我在Intel Core 2 Duo筆記本電腦上運行我的Tomcat服務器,4 GB的RAM。我知道這不是一臺真正的服務器機器,但我只有這一點,它僅用於研究目的。

爲了測試,我在遠程計算機上運行JMeter,並通過帶中央無線路由器的專用WLAN進行通信。我更願意從無線連接進行測試,因爲它可以從移動客戶端訪問。使用JMeter,我運行一組50個線程,每秒啓動一個線程,然後在50秒後所有線程都在運行。每個線程反覆向服務器發送一個HTTP請求,包含一個要處理的小JSON對象,並且在每次迭代中休眠一段時間,等於100毫秒的常量延遲和具有標準偏差的高斯分佈的隨機值的總和100毫秒。我使用一些JMeter插件來繪製圖形。

下面是結果: enter image description here

我不能找出爲什麼每秒MI命中不與該結構中它應通過100的閾值(在圖中它們被每10相乘),怎麼一回事,因爲已經高於這個值(50次線程發送至少三次會產生150次命中/秒)。我沒有收到來自服務器的任何錯誤消息,並且都似乎運作良好。我試過的配置越來越多,但我無法獲得超過100次/秒的命中。 爲什麼?

很多時候我注意到從某種程度上來說性能顯着下降,沒有任何可見的原因:客戶端上沒有錯誤響應消息,只有ok響應消息,以及所有服務器似乎都能正常工作,但是看在報告:

enter image description here

正如你可以看到,一些1點54分和2點14分之間發生的情況:每秒點擊率下降和響應時間的增加,還好它可能是服務器過載,但對於CPU在減少?這與擁塞假設不兼容。

回答

1

我想注意到你已經很好地選擇了在複合圖上顯示哪些行。這足以得出一些結論:

  1. 請注意,每秒命中數與CPU使用率完全相關。這意味着你有「CPU綁定」系統,最大性能主要受CPU限制。這點非常重要:服務器資源由命中,非活動用戶使用。你可能會禁用你的睡眠計時器,仍然會收到相同的80-90 Hits/s。
  2. CPU的最高級別是80%,所以我假設你在你的機器上運行Windows操作系統(Win7?)。我曾經看到,在Windows機器上實現100%的CPU利用率是不可能的,但它不允許花費最後的20%。如果達到最大值,那麼你會看到你的安裝的容量限制。它只是沒有足夠的CPU資源來提供更多的請求。爲了解決這個瓶頸問題,您應該提供更多的CPU(使用具有更高級CPU硬件的另一臺服務器),或者配置操作系統讓您使用最多100%(我不知道它是否適用),或優化系統(代碼,OS設置)花費更少的CPU來處理單個請求。
  3. 對於第二張圖,我猜想通過路由器下載了一些東西,或者在JMeter機器上發生了一些事情。 「發生某事」意味着某些任務正在運行。這可能是你想要做一些「grep error.log」的朋友,或者某個計劃任務正在運行。爲了將其降低,應該在降級情況下查看路由器資源和jmeter機器資源。必須有一個吞噬CPU /磁盤/網絡的進程。
+0

謝謝,你的回答是非常有幫助的。我不認爲響應時間問題可能與路由器上的其他流量有關,可能是由我的房間夥伴產生的;)。 PS:我正在使用Mac OS X – user1781028 2013-03-06 19:12:13