為什麼重新啟動 tomcat9 可以解決網路問題?
我面臨一個非常奇怪的問題。幾天以來,每天幾次,我的 ubuntu 伺服器無法建立出站連接。我可以使用 SSH 登錄,連接到由 apache 網路伺服器託管的 Web 應用程序,但嘗試使用 apt 安裝軟體包或執行 telnet google.com 443 會導致錯誤,例如“telnet:無法連接到遠端主機:連接拒絕”或“連接(111:連接被拒絕)無法啟動與 fr.archive.ubuntu.com:80 的連接(2001:860:f70a::2)。-連接(101:網路無法訪問)”。
起初,我懷疑 iptables 規則,但將它們全部刪除並不能解決問題。另一方面,如果我停止 tomcat9 應用程序伺服器,一切都會重新開始工作。
我無法想像 tomcat 如何影響我伺服器的網路連接。完全相同的應用程序部署在不受此問題影響的其他類似的 Ubuntu 18.04 伺服器上。
任何關於檢查什麼以辨識潛在問題的提示將不勝感激。
非常感謝你!
編輯>
#ping google.com PING google.com (172.217.170.14) 56(84) bytes of data. From _gateway (192.168.10.254) icmp_seq=1 Destination Host Unreachable 64 bytes from jnb02s02-in-f14.1e100.net (172.217.170.14): icmp_seq=1 ttl=57 time=226 ms 64 bytes from jnb02s02-in-f14.1e100.net (172.217.170.14): icmp_seq=2 ttl=57 time=226 ms # traceroute google.com traceroute to google.com (172.217.170.14), 30 hops max, 60 byte packets 1 _gateway (192.168.10.254) 0.889 ms !H 0.446 ms !H 0.406 ms !H # ip route get 8.8.8.8 8.8.8.8 via 192.168.10.254 dev eth0 src 192.168.10.142 uid 0 cache
事實證明,提供基礎設施的人確實設置了某種出站連接速率限制器,該限制器是由 DCM4CHEE docker 容器不斷的反向 DNS 請求觸發的。
我反復得到保證,他們的防火牆中沒有啟動這樣的機制,而且我沒有考慮過檢查出站 DNS 連接,所以我沒有註意到它們執行的“巨大”速率。
我已經浪費了 40 多個小時來調查這個問題,並且一旦他們弄清楚這個問題,我就能在 5 分鐘內解決它。
謝謝你的幫助。
問題的一種可能來源可能是打開文件描述符的數量超過系統限制。
當系統處於該狀態時,執行
cat /proc/sys/fs/file-nr
. 輸出如下所示:46512 0 9223372036854775807
如果第一個數字接近第三個數字,則意味著所有可用的文件描述符都在使用中。
要增加可用文件描述符的數量,您可以執行
sysctl -w fs.file-max=<number> sysctl -p
Where
<number>
高於您現有的最大限制(先前輸出中的第三列)。