[英]How to write a TCP Server, using c# with concurrent connections at any time
我們在該國擁有超過50,000輛車的車隊,我們將使用固定在車輛中的gps設備(而非移動設備)來跟蹤我們的車輛,tcp服務器會通過指定IP地址和端口來接收該位置服務器。
主要要求之一是並發連接,每輛車每分鍾都會更新其位置,因此編寫過基於50,000輛車的TCP服務器的經驗豐富的人可以告訴我隨時可以接收多少個並發連接(只是一個想法) 。 我如何測試它,我的意思是如何對我的tcp服務器進行負載測試。
如果您知道任何有用的.net庫,請進行指導,我從www.nsoftware.com看過IPDaemon,他們聲稱
默認情況下,每個IPDaemon實例最多可以處理1,000個並發傳入連接(通過使用MaxConnections配置設置,此數目可以增加到100,000,也可以減少到一個較低的值)。
因此,我感到困惑並感謝經驗豐富的同事的建議。
謝謝
如果您唯一需要發送的是職位和一些元數據,請使用簡單的HTTP服務器。 市場上有很多這樣的公司,而且大多數都非常有效率:管理5萬個客戶應該不是問題,這不是一個很高的數目。
我建議您不要重新發明輪子或使用任何過於復雜的東西。 一個簡單的ASP.NET MVC應用程序應該可以解決問題。
並發連接數絕不能高於1500(99.99%)。 除了在實際系統上進行測試外,沒有真正的方法來對其進行負載測試。 這是一個數學問題,您可以這樣解決。
您有50000輛汽車每60秒發送一次信號,持續1秒(可能更少,這將導致更少的並發連接)。 由於信號的發送是不同步的(我想是汽車在同一時間都發送信號),所以它們或多或少地排列成這樣,這樣您每秒將獲得833個連接,即50k / 60。 現在,讓我們假設您“不幸”,同時打開了2000輛汽車(或相隔60秒),然后在打開這些汽車時將獲得2000個並發連接,這極不可能。 正如我說的那樣,您可以將1500個並發連接作為最大連接數,但要真正節省下來,請將其增加到3000或4000,這是永遠不會發生的。
所有這些都考慮到計算機將花費1秒來解析一個信號,實際上這一次應該接近0.1秒甚至更低,這將導致並發連接減少10倍,因此我對絕對最大並發連接的真實猜測約為500
如果不是.Net的硬性要求,建議您使用NodeJs。它非常輕巧,並且已經相當成熟。
正如Falanwe所說,每分鍾50.000個連接並不是很多,如果僅僅是它們正在發送的位置數據。 這基本上受帶寬限制。 計算機上沒有太多服務。
我認為您最大的挑戰不是與GPS跟蹤器的TCP連接,而是數據庫處理。 保存所有位置數據1年后,您將擁有的數據量很大。 數據庫服務器的性能將非常重要。
另外:您將如何管理,以及如何對收集到的數據進行處理? 您將需要創建智能通知和數據過濾器,以提取管理車隊所需的數據。
我在設置GPS跟蹤服務器和管理車隊方面有很多經驗。 如果您有任何疑問,請隨時與我聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.