昨天我的网站关闭了很短的时间。我登录了我的服务器,我的第一反应是重新启动 apache Web 服务器。之后一切正常。所以我开始检查神经节指标,看看发生了什么。很明显,在我重新启动 apache 的前一分钟,对 web 服务器的请求数非常多,超过了 Apache 的限制并阻塞了其他请求。
我手动检查了 apache 日志,过滤了重启前后的流量分钟。没有任何不对劲的迹象。我还使用一些工具(awstats、bots 脚本等)分析日志,结果相似。我对错误日志做同样的事情,仔细检查一些奇怪的行为。没有成功。
所以我很确定问题是对 apache Web 服务器的请求突然增加。但我不知道这是怎么发生的,如果这是一次攻击,一些讨厌的错误,应用程序中的问题,或者其他我不知道的事情。如果在您的 Web 服务器中发生类似的事情,您会怎么做?您还使用哪些其他工具?您还检查了哪些其他日志?重启网络服务器作为解决问题的第一个措施是错误的吗?
回复:重新启动服务器作为第一个措施......“It Depends”的另一个很好的例子:-)
如果这是一个必须启动服务器的系统,我认为我不会先重新启动它。
我会浏览日志,也许在 apache 日志上有一个 tail -f 来查看实时发生了什么。
我也可能会打开另一个窗口并通过wireshark检查是否有任何可疑之处,只是为了查看哪些流量正在撞击(和离开)系统。
否则,请检查系统负载、驱动器活动、进程列表、网卡活动,以验证它是流量而不是软件相关。检查内存/交换使用情况。检查 Apache 进程的数量,看看它们是否已用尽。
大多数情况下都不需要重新启动,虽然它显然解决了问题,但它并不能解决导致问题的原因,这意味着您可能会接到另一个电话(可能在更不方便的时间)快点再次修复它。不应该通过定期的计划外重新启动来维护任何服务器。
重新启动可能是一种让上级或用户在炎热时远离你的方式,但另一方面,你可能已经失去了弄清楚到底发生了什么事情的机会。奇怪的是,攻击会在重新启动后突然停止,除非它是端口扫描或 Web 服务器扫描程序,此时您的服务器“消失”可能已经发出继续前进的信号。
如果它是一个必须一直运行的系统,您可能需要考虑某种故障转移和负载平衡解决方案。这也将有助于故障排除,并让您在诊断问题时更灵活而不会丢失连接(尽管您需要更多的自动化监控来告诉您系统 A 有问题,但由于 B 站点仍在工作,因此用户不会告诉你有问题)。
我在表现出类似症状的 apache 网络服务器上使用了一个粗略但有些有效的措施。我有一个每分钟运行的 cron 工作
这样,如果 apache 服务器队列填满了请求(它有时会出于未知原因这样做:Apache 被某些请求“阻塞”)我有一个导致请求发生的日志。它还有助于解决高负载时刻。
我也强烈推荐Cacti和Nagios进行监控