2016-09-19 155 views
0

我有一個用Spring Boot編寫的只有GET和POST方法的REST服務。 GET/POST方法從cassandra集羣中檢索/發佈數據。 我試着同時運行100個用戶測試REST服務。 我JMeter的配置是:REST使用Jmeter的服務負載測試

No of users 當我運行這個測試,最初的幾個要求它提供錯誤和半請求成功。 這裏是 Result table

然後我檢查錯誤的原因在結果樹,發現這個響應數據結果表:

{"timestamp":1474278650822,"status":500,"error":"Internal Server Error","exception":"com.datastax.driver.core.exceptions.NoHostAvailableException","message":"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (no host was tried)","path":"/post"} 

我無法弄清楚,爲什麼它沒有前幾個請求連接到cassandra羣集。

我是cassandra,REST服務和jmeter的新手。任何人都可以指出我正在犯什麼錯誤。 注意:我已使用Postman測試了我的REST服務,它的功能很好,既有GET和POST請求。

回答

2

通過此配置,您可以立即用012請求。 每個請求都會得到一個請求線程,因此我假設你的服務有一個至少有100個連接線程的線程池。 每個請求線程都會嘗試從數據庫連接池獲取到數據庫的連接。如果你的請求中有50%失敗了,我猜你的數據庫連接池大小設置爲50.如果你的數據庫連接池可以處理100個連接,檢查你的Cassandra DB的連接設置,也許這​​個連接設置限制爲50。

+0

謝謝,我不知道池的大小。我會研究它。 – hmachahary

1

@Gerald的答案還有幾個補充。數據庫中的線程池限制的數量可能不是唯一的罪魁禍首,其他可能性也是服務器級別設置的最大線程連接數。如果你有權訪問你試圖測試的api的服務器日誌,你可以準確地知道它在什麼時候破解並在開發人員的幫助下修復它

+0

我檢查了我的服務器在哪裏,我的休息服務正在運行,我發現了一些泄漏。我無法理解它。 – hmachahary

+0

'錯誤4114 --- [tp1408652377-83] io.netty.util.ResourceLeakDetector:LEAK:您正在創建太多的HashedWheelTimer實例。 HashedWheelTimer是必須在整個JVM中重用的共享資源,以便只創建少量實例。「 – hmachahary

+0

然後,答案很簡單,由於共享資源的使用情況以及您的測試應該爲AsyncHttpClient配置的服務器以支持對Jmeter的多重請求。在此之前,您的連接數量將受到限制 –