我遇到了一个我以前没有遇到的问题,并且很好奇,看看这里有没有人可能对造成这个问题有什么想法。
我们从Slicehost运行一个VPS,昨天有一段时间,我们主机的网站出现故障(在我对服务器做了任何事情之后,正常工作了好几个月),但只有那些通过HTTP(使用端口8080)的网站。 HTTPS站点(标准端口)仍在运行, 如果它们是专门使用https://site.com访问的(而不是放入site.com并让redirect工作)以及SSH连接直接连接到服务器。
它一直呆到今天早上。 我重新启动服务器,但没有帮助。 我SSH进入,并确保一切正常,运行正常。 Nginx日志或其他日志中没有错误信息。 但是,没有任何改变。 突然间,大概半小时后,我正在寻找原因,网站又开始工作了。
我从来没有发现什么可能导致这个问题(我发现的一切都是客户端问题),所以我很好奇,可能会导致这个问题。 这样,如果再发生这样的事情,我可以更好地诊断和修复它。
实际上任何事情都可能导致这个问题。 除非有人真的发生了这个确切的问题,同样的原因,你可能无法解决你提出的问题。
但是,为了帮助您下次解决问题的原因,以下是一些诊断提示:
tcpdump -i ethN -n port 8080并尝试发出请求。 如果tcpdump什么都不显示,那就是networking问题。 麻烦软弱者。 iptables -L INPUT -v >/tmp/before ,点击站点,运行iptables -L INPUT -v >/tmp/after ,然后diff /tmp/before /tmp/after 。 数据包/字节计数的任何差异都表示可能阻止stream量的防火墙规则。 您需要validation每个规则,以确定是否是问题的原因。 (这就是为什么login你的防火墙是一个好主意,使这种事情更容易)。 netstat -ltnp |grep :8080来validationnginx实际上正在监听感兴趣的端口,并且正在监听正确的IP。 在游戏的这个阶段不要拿任何理所当然的东西。 strace -p <pid> -p <pid>以便与nginx相关联的所有进程)进行冲突,并确保它们是否获得交通,看他们是否(以及他们在做什么)。