我面临一个非常奇怪的问题。几天以来,每天几次,我的 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
问题的一种可能来源可能是打开文件描述符的数量超过系统限制。
当系统处于该状态时,运行
cat /proc/sys/fs/file-nr
. 输出如下所示:如果第一个数字接近第三个数字,则意味着所有可用的文件描述符都在使用中。
要增加可用文件描述符的数量,您可以运行
Where
<number>
高于您现有的最大限制(先前输出中的第三列)。事实证明,提供基础设施的人确实设置了某种出站连接速率限制器,该限制器是由 DCM4CHEE docker 容器不断的反向 DNS 请求触发的。
我反复得到保证,他们的防火墙中没有激活这样的机制,而且我没有考虑过检查出站 DNS 连接,所以我没有注意到它们执行的“巨大”速率。
我已经浪费了 40 多个小时来调查这个问题,并且一旦他们弄清楚这个问题,我就能在 5 分钟内解决它。
谢谢你的帮助。