我有一個數百萬個URL/IP的文件,並且必須編寫一個程序來真正快速地下載頁面。連接速率應至少爲6000/s,文件下載速度至少爲2000,平均值爲。 15kb文件大小。網絡帶寬爲1 Gbps。設計最快的頁面下載
到目前爲止,我的做法是:創建600個套接字線程,每個線程有60個套接字並使用WSAEventSelect等待數據讀取。一旦文件下載完成,將(下載的文件的)內存地址添加到流水線(簡單向量)並激發另一個請求。當所有套接字線程中的總下載量超過50Mb時,寫入下載到磁盤的所有文件並釋放內存。 到目前爲止,這種方法並不是非常成功,我可以在不超過2900個連接/秒的情況下進行拍攝,並且下載數據速率更低。
有人可以提出一種替代方法,可以給我更好的統計數據。另外我正在使用8G內存的windows server 2008機器。另外,我們是否需要破解內核,以便我們可以使用更多的線程和內存。目前我可以創建一個最大值。 1500線程和內存使用不超過2個演出[技術上應該更多,因爲這是一個64位機器]。 而IOCP是沒有問題的,因爲我目前還沒有這方面的經驗,現在必須修復這個應用程序。
謝謝!
如果您需要解決2 GB以上的問題,請將其編譯爲64位(但您的代碼可能尚未準備就緒),或者將32位應用程序與/ LARGEADDRESSAWARE關聯(這會給您4GB的空間64位系統上的32位應用程序) – Patrick 2010-05-28 14:26:22