2011-03-30 58 views
1

我們有一組應用程序,可以在同一網絡內將數據從一個系統傳輸到另一個系統。他們使用WCF C#,並在連續的基礎上執行一次傳輸1000個對象的操作。 (接收數據後,接收端應用程序通知發送方發送更多的數據)在數據遷移中傳輸大數據

我想通過在給定的時間傳送更多的數據,以優化的過程中,以及正在考慮以下哪個2個選項是更好:

  1. 顯着增加轉移數量。越大越好,使它像50000個物體。這將減少每個數據從用戶進程空間遷移到網卡所花費的時間,方法是批量執行。

  2. 使轉移數量小於1460,這是我們的網絡路徑MTU。例如,如果一個對象是100字節,則傳輸12個對象,留下http和soap頭部的一些限制。這將避免重新組合TCP段並加快收據。 (它可以避免過多的內存使用問題)

你能告訴哪個選項更好,或者如果我可以嘗試一些其他的想法來加速傳輸?

+0

不管你做什麼要確保,如果你的終點都是.NET使用TCP傳輸,它是全世界最快的 – 2011-03-30 02:06:22

+0

ķlvanov的 - 感謝這個提示! – paseena 2011-03-30 02:44:07

回答

1

我不認爲你的問題是轉移到網卡的速度。

請告訴我們關於此次數據遷移的更多信息 - 它是否來自平面文件? - 你是否在改變數據? - 在另一端需要哪種類型的數據?

我猜 - 但我希望你必須改變數據。如果你只需要移動數據,那麼移動一個大文件有許多快速的方法(例如ftp或其他標準)。

如果改變很可能是這樣的過程,減慢你失望的數據 - 運行您的程序分析器和優化。

+0

源數據是來自設備的測量數據消息。我們在C#代碼中轉換數據。算法不需要太多時間,並且可以通過並行運行更多程序來減少延遲。請假設,在目前我的主要瓶頸是網絡上的序列化和傳輸側。 – paseena 2011-03-30 02:41:57

+0

PS:我們正在試圖從四面八方提高的過程中,將確定以花時間和精力在網絡側 – paseena 2011-03-30 02:42:44

+0

您將數據轉換爲SOAP將其傳送到目標機器?我會通過WCF而不是SOAP使用二進制TCP傳輸。 – Hogan 2011-03-30 02:52:35