2011-11-01 33 views
3

好吧,所以我創建了一個非常簡單的WAR,它服務於一個簡單的Hello World .jsp。所有的HTML都是大約200字節。JMeter,Jetty性能測試和Keep-Alive問題

部署它運行碼頭7.5.x JDK 6u27 在我的客戶端計算機上我的服務器上創建簡單的JMeter測試計劃用:線程組,HTTP請求,響應斷言,總結報告客戶同時運行jdk6u27

我成立線程組爲5個線程運行60secs,我得到了5800個請求/秒 然後我設置了10個線程,得到6800個請求/秒

當我在HTTP請求採樣器上禁用JMeter中的Keep-Alive。我想,我似乎在客戶端有很多大的停頓,但似乎服務器並沒有收到任何東西。我在5個線程或幾乎沒有任何停頓,但在10線程幾乎一直掛起。

這是什麼意思?

請記住,我在技術上創建一個REST服務,我得到同樣的問題,所以我雖然也許我在我的服務中做了一些奇怪的事情,直到我發現它是一個Keep-Alive問題,因爲它正在做幾乎在一個staic web應用程序。所以實際上我會有1個客戶端請求1個服務器響應。客戶端不會保持連接打開。

回答

4

我的猜測是由於Keep-Alive是允許HTTP連接(從而套接字)重複使用的原因,因此您的可用臨時端口號不足 - 只有64k端口號,並且由於連接必須具有唯一的客戶端/服務器端口組合(和服務器端口是固定的),您可以快速通過這些。現在,如果一端連接關閉後端口是可重用的,則無關緊要:但是,根據TCP規範,雙方必須等待可配置的時間量(默認值:2分鐘),直到重新使用被認爲是安全的。

欲瞭解更多的細節,你可以閱讀一本TCP書(如「史蒂文斯書」);以上是簡化。

+0

是的,認爲是的。我將Windows設置爲30秒。但是,在6000秒的時間內,每秒30秒的請求就是180 000個連接。我想我需要從多個客戶端框進行測試。 – user432024