我目前正在嘗試加載測試服務器。由於我的控制以外的問題,我不能使用Jmeter進行測試。創建一組線程並讓每個線程在同一時刻發送帖子或儘可能接近發送帖子的最佳方式是什麼?在運行發送到POST到服務器的方法之前,我的當前實現創建了一些帶有for循環的線程。但這根本不是同時發生的。如何發送並行POST請求Java
回答
我說你會想在羣集中做到這一點,而不是在同一臺機器上的多個線程,除非你有一臺機器與幾個網絡接口卡(NIC)。你的瓶頸不是內核,它是你的網卡。您的網卡仍然會依次清空其緩衝區。
我會推薦的是有儘可能多的機器集羣,你可以。在每臺機器上,都有一對線程(只是爲了確保NIC的緩衝區保持滿)。不要麻煩同步集羣同時發送請求,因爲往返時間(RTT)將花費太長時間,並且會使您的負載測試無效。只需要將每個線程錘掉......從統計角度來講,如果您的羣集足夠大,則必定會同時獲得幾個POST請求。
假設存在任何瘋狂的原因,我不能使用預先存在的加載應用程序,這是我會用我將創建的應用程序做什麼。將罐子放在儘可能多的機器上,並行運行。 – MadConan
一個網卡一次只能處理一個連接到主機的連接? – MadConan
一個網卡有一個緩衝區,你可以儘可能快地填充它,但它只能清空緩衝區才能順序發送數據包。服務器通過擁有多個網卡來解決這個問題 - 不是我是一個服務器大師或其他任何東西 – searchengine27
我肯定會推薦使用一些負載測試應用程序框架。有很多可供選擇的。
就這樣說,你可以使用這樣的事情開始。這將是我從哪裏開始。您需要實施performRequest
方法。至少可以這樣說,這並不是很強大。沒有日誌記錄,沒有報告沒有錯誤處理 - 你可以通過一個負載測試應用程序「免費」獲得所有這些(對於「免費」的某些定義)。
public class HttpClient {
enum RequestType{
POST,GET
}
private RequestType type;
private String url;
public HttpClient(RequestType rt, String url){
type = rt;
this.url = url;
}
public void performRequest(){
// your code here.
}
public static void main(String[] args){
List<HttpClient> clients = new ArrayList<>();
int clientCount = Integer.parseInt(args[0]);
String url = args[1];
for(int i=0; i<clientCount; i++){
clients.add(new HttpClient(RequestType.POST,url));
}
clients.parallelStream().forEach(HttpClient::performRequest);
}
}
你可能想使
- 默認的線程池的一些顯着的改進是非常小的。它等於系統上的CPU核心數量。創建自己的
ForkJoinPool
實例將爲您提供更好的控制。 - 移動到一個單獨的類來啓動和解析參數會好得多。
假設你的問題是關於同步你的線程,而不是創建/運行線程,那麼我推薦CountDownLatch。鏈接中的示例非常棒。
- 1. JAVA發送POST http請求
- 2. 如何發送POST請求?
- 3. 發送POST請求
- 4. 發送POST請求
- 5. 發送POST請求
- 6. 發送POST請求
- 7. 如何發送POST HTTP請求的Java進行wit.ai音頻
- 8. POST請求發送json數據java HttpUrlConnection
- 9. Java - 發送GET或POST請求
- 10. 如何使用nsurlconnection發送post請求
- 11. 如何讓Ajax.ActionLink發送Http Post請求?
- 12. 如何使用django發送POST請求?
- 13. 了設備如何發送POST請求
- 14. Django的tastypie - 如何發送post請求
- 15. 如何在python中發送post請求?
- 16. 如何向OpsGenie發送POST請求?
- 17. Android,如何發送POST請求
- 18. 如何使用Volley發送POST請求
- 19. 如何通過telnet發送POST請求
- 20. 如何使用HTTPie發送POST請求?
- 21. 如何在RestSharp中發送POST請求?
- 22. 發送POST請求點擊
- 23. C#POST請求被髮送
- 24. 發送HTTP POST請求
- 25. 發送POST請求變身
- 26. 發送Rails中POST請求
- 27. 改造:發送POST請求
- 28. HttpsURLConnection - 發送POST請求
- 29. 發送POST請求JSP
- 30. PHP Post請求發送
我不明白jmeter與體系結構的關係 – njzk2
如果您從外部負載測試服務器(模擬HTTP流量),則應該如何生成流量。那麼爲什麼JMeter沒有這個問題呢? –
我不能具體說。但是我有一種處理jmeter不能做的數據的方法。這不是重要的部分。 – drpogue