美好的一天,
几天前,我在Ubuntu 12.04上安装了新的服务器,并将所有的数据和服务从一个旧的(相当过时的2011年服务器)迁移到它。 有很多不同的服务安装在它上面:nginx,mysql,memcached,varnish等
现在我有一个networking连接的问题:有限的连接数量正常工作,但其他不会,他们只是超时。 这些请求在Web服务器的访问日志中根本不可见。 而且,一些带有cURL的传出请求也不能工作,他们超时30秒。 有时我无法连接到服务器 – 有时SSH连接超时! Pinging google:
--- google.com ping statistics --- 33 packets transmitted, 0 received, 100% packet loss, time 32017ms
我没有更新或安装任何额外的防火墙,也没有更改系统networkingconfiguration选项。
您可以通过访问任何页面(例如http://en.advisor.travel/poi/Wroclaw_Palace-15356 )轻松重现问题,并快速刷新页面多次。 您将以“服务器不可用”浏览器错误结束。
似乎服务器有一些奇怪的networking连接限制或规则来阻止从一个IP快速连接inheritance,但我找不到任何有用的设置:/没有什么有趣的可以在syslog或dmsegfind。
/etc/sysctl.conf有一切注释掉,但默认行:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
默认防火墙ufw已停止。
任何想法发生了什么,做什么非常感谢!
当我连接到服务器时,我发现一些客户端端口号工作,其他端口号失败。 每次都是一样的端口号,但是因为普通的客户端每次都会使用一个新的端口号,所以会出现随机的。
这种行为可能是networking链接断开的症状。 您希望stream量在捆绑中的链路上进行负载均衡,但您不希望TCP连接中的数据包在networking上相互超越,因此每个TCP连接应该保留在捆绑中的同一个链路上。
这就是为什么一个捆绑中断的链接会导致某些端口号码工作,而其他端口号码会失败。
traceroute显示SYN数据包可靠地从我的计算机发送到服务器之前的最后一跳。 但是我不能可靠地得到一个SYN-ACK。 这意味着问题要么是从最后一个路由器到服务器的最后一跳,要么是返回path上的某个地方。
从服务器上,您可以运行traceroute -n -p 80 name-of-another-server以查看来自服务器的SYN数据包能够可靠地发送多远。