2012-09-24 62 views
3

我建立在C#應用程序(客戶端)使用Ping.SendAsync(主機,3000,空)來驗證連接和發送數據,ping請求的服務器在我的本地網絡。該應用程序將安裝在約200臺電腦中。C#可以安全地每隔5秒從200臺客戶端PC ping服務器(在本地網絡中)嗎?

的問題是:

它是安全的ping服務器整天與那些200只長每5secs?

在此先感謝

+3

爲什麼你會平安(民意調查),所以經常?您是否一直在發送數據,或者您是否試圖驗證可以隨時發送數據? – tsells

+0

@tsells:我不知道OP爲什麼要這麼做,但是當我這樣做時,原因是當服務器出現故障時相對迅速地知道。儘管如此,我的監控應用程序只有少數客戶,而不是200. – Gabe

回答

5

你應該已經知道這個問題的答案一個 - 這取決於

比方說,您平均每秒發送40個請求。 Web服務器可以每秒處理40個請求嗎?它可能會,但是你沒有提供有關服務器正在做什麼的任何細節。

對於服務器接收請求,並返回一個簡單的值然後毫秒數很可能是在個位數。如果服務器需要讀取或寫入磁盤,或者連接到另一臺服務器(例如數據庫),那麼毫秒數可能是兩位數。如果連接到遠程或多臺服務器,則甚至可能需要三位數字 - 超過100毫秒。

如果服務器需要緊縮一些數字和計算的東西,然後有沒有猜測的方式 - 它可能需要一天就我所知。

假設服務器不運行需要專門的資源,任何其他關鍵系統,你在這裏兩件事情

  • 多久的操作才能完成真正的興趣?顯然需要在5秒以內完成,因爲服務器當時想要發出另一個請求,並且他們會簡單地排隊,導致混亂。
  • 服務器可以處理多少個併發請求?確保你沒有運行單線程服務器;你希望能夠同時處理多個請求。這將再次確保請求不會排隊。

您需要平均每秒40個,這實際上並不是很多 - 假設沒有太多的處理髮生。但是知道這是不是一個好主意的方法就是簡單地測試一下。您應該使用測試框架或編寫測試工具 - 這非常簡單,只需編寫儘可能快地啓動服務器的應用程序即可。您需要從多臺客戶端計算機運行測試,否則您將無法確定單臺客戶端計算機不是瓶頸。

這聽起來可能很乏味,但它既需要也需要教育。

+0

好帖子柯克。請注意,OP確實指定他使用'Ping.SendAsync' - 不是寫入磁盤的請求。 – Adam

+0

Thankyou回覆我的帖子。 – user1693287

+0

Thankyou回覆我的帖子。我會做一些測試,看看它有多好。經常ping服務器的原因是因爲學生經常拔出客戶端電腦並經常重啓。 (它是我工作的學校)。我也使用NetworkAvailability/AvailabilityChanged。但我需要驗證鏈接已經啓動並準備好將信息發送到服務器。雖然沒有太多的信息,但每個客戶端(200)每隔半小時左右只需一對插入查詢。 – user1693287

0

那只有約110MB一天......我不會強調這件事。

你提到,雖然發送數據...確保你的數據包是合理的大小(你想避免DDOSing自己)的。

如果它通過互聯網運行,我可能會更加小心。

+0

謝謝。是的,我發送數據。雖然不多。每半小時左右只有一對插入查詢。我在本地網絡上運行。我會做一些測試,看看它是如何工作的。 – user1693287

相關問題