2009-12-18 93 views
1

我有很多客戶(約4000)。 每個客戶端每2秒鐘ping我的服務器。 這些ping請求可以對服務器施加負載並減慢速度嗎?請求ping請求是否對服務器造成負擔?

如何監控此負載? 現在,服務器的響應速度很慢,但處理器幾乎空閒,並且可用內存不錯。 我在Ubuntu上運行Apache。

+0

你的意思是ICMP ping或更高級別的東西? – skaffman 2009-12-18 07:07:30

+0

是的,ICMP ping。 Ping由WinAPI的InternetCheckConnection函數發送。 – Pavel 2009-12-18 07:31:39

回答

7

假設你的意思是一個UDP/ICMP ping來查看主機是否活着,那麼4000個主機可能沒有太多的負載並且相當容易計算。 CPU和內存方面,ping是由內核來處理的,應該優化爲不佔用太多資源。所以,你需要看網絡資源。最關鍵的一點是,如果你有一個半雙工鏈路,因爲你們所有的主機都很健談,你會導致大量的衝突和重傳(以及丟棄的ping)。如果鏈接都是全雙工的,那麼讓我們計算服務器所需的實際帶寬量。

  • 4000客戶端@2秒
  • 每個平是在電線(32點字節的數據+ 8個字節ICMP頭+ 20字節的IP報頭+ 14個字節的以太網)72個字節。 *如果您使用vlan標記或基於UDP的ping,則可能會產生一些額外的開銷
  • 如果我們可以假設ping是隨機分佈的,那麼我們將有每秒2000個ping @ 72個字節= 144000個字節
  • 將8乘以得到Bps = 1,152,000 bps或約1.1Mbps。
  • 在一個100Mbps的局域網上,這僅僅是ping的1.1%利用率。

如果這是一個局域網環境,我會說這基本上沒有負載,如果它是通過T1然後它是一個巨大的負載量。所以你應該基本上運行相同的計算,哪些網絡鏈接也可能是瓶頸。

最後,如果您不使用ICMP ping來檢查主機,但具有應用程序級別的ping,那麼您將擁有所使用的協議的所有開銷,並且ping將需要一直向上協議棧,並且您的應用程序需要做出響應。再次,這可能是一個非常小的負載,或者它可能是巨大的,這取決於實現細節和網絡速度。如果主機閒置,我懷疑這對你來說是一個問題。

1

是的,他們可以。一個ping請求不會佔用太多的CPU負載,但它肯定會佔用帶寬和標稱數量的CPU。

如果你想監視這個,你可以使用tcpdumpwireshark,或者設置一個防火牆規則並監視它匹配的數據包數量。

1

除帶寬之外的另一個問題是CPU。如果將一個ping命令指向CPU進行處理,則會有數千個命令導致任何CPU上的負載。這是值得監測的 - 但正如你所說的你幾乎空閒,所以它可能會應付。值得記住,但。

根據客戶端的不同,ping數據包的大小可能不同 - 它們的有效負載可能只是「aaaaaaaaa」,但有些可能是「thequickbrownfoxjumpedoverthelazydog」 - 這明顯是對帶寬的進一步要求。