2009-08-13 150 views
1

爲了測試我的程序,我希望儘可能快地發送大約50個http請求。目前我使用bash腳本它調用捲曲&發送每個請求像儘可能快地發送HTTP請求

curl "http://my.host.com/test.php?param=1" & 
curl "http://my.host.com/test.php?param=2" & 
curl "http://my.host.com/test.php?param=100" & 

但似乎不夠快。我想因爲每次curl調用都會首先建立一個tcp連接,並且如果只建立一次連接,性能可以提高。有沒有其他工具可以有效地發送請求?

回答

6

Apache爲基準測試提供了一個名爲「ab」的程序。在網絡上,可以使用許多網站的壓力測試應用程序。

+1

http://httpd.apache.org/docs/2.0/programs/ab.html – gnarf 2009-08-13 15:45:26

1

請勿使用bash。使用任何其他腳本語言(Perl,Python等),然後創建一個單一的連接,並儘可能快地處理請求。對於獎勵積分,啓動多個線程,以便測試程序處理同時連接的能力!

1

JMeterload test apache的好方法。

從他們的網站:

的Apache JMeter是開源軟件 ,100%純Java桌面 應用而設計的負載測試 功能行爲和衡量 性能。它原本是 設計用於測試Web應用程序 ,但已擴展到其他測試 功能。

我該怎麼處理它?

的Apache JMeter的可用於靜態和動態 資源(文件,servlet,Perl的 腳本,Java對象,數據庫和查詢 ,FTP服務器等等)測試 性能兩者。可以使用 來模擬服務器,網絡或對象上的重負載以測試其強度,或者分析不同負載類型下的整體性能 。您可以使用它來進行性能的 圖形分析或 以測試您的服務器/腳本/對象 嚴重併發負載下的行爲。

1

儘管您背景下所有下載的事實,但這並不會執行的原因是操作系統仍然需要加載curl(從緩存但仍然),爲它創建一個進程,解析參數等。

您需要可以並行發送N個請求而無需啓動新進程的內容。

3

在PHP中(當然也在CURL中)有something really nice

在google.com上執行1000次常規GET,大約需要16秒,約每秒63次請求

3

在同一臺計算機上運行的多臺機器上的Apache JMeter可能會非常快。