Ubuntu

Linux 伺服器在執行一段時間後不響應 TCP 連接。如何分析?

  • August 29, 2011

幾天以來,我在網際網路上的 Ubuntu 11.04 伺服器出現了一些奇怪的行為。它在一些 Java Web 應用程序中執行得非常好。然後,突然它不再接受連接。當我嘗試 ssh 或 http-connect 我的伺服器時,我沒有得到任何響應,直到我超時。但是 ping 工作得很好。nmap 也可以:

Starting Nmap 5.21 ( http://nmap.org ) at 2011-08-29 10:52 CEST
Nmap scan report for ...
Host is up (0.020s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
443/tcp  open  https
3000/tcp open  ppp
3128/tcp open  squid-http

重新啟動後,一切都會再次執行幾個小時。

這可能是什麼?或者如何分析這個問題?

這確實看起來像您的記憶體不足,系統上沒有交換。如果 linux 系統記憶體不足,它就不能再接受 TCP 連接,因為連接需要建立記憶體。ICMP 可能不需要任何東西,因為沒有要維護的狀態。

到處檢查記憶體設置,確保分配給 JVM 的記憶體不超過 70%(-Xms 和 -Xmx 選項)。

如果尚未完成啟動交換,您可以在磁碟的某處創建一個基本交換文件:

dd if=/dev/zero of=/mnt/swapfile bs=1M count=10240
mkswap /mnt/swapfile
swapon /mnt/swapfile

如果在那之後您的系統再次掛起,那麼是時候進行一些低級別的監控了。

引用自:https://serverfault.com/questions/305992