Apache2 服务器重启后很快变得过载且无响应

Apache2 服务器重启后很快变得过载且无响应

我最多只能算是一个初级系统管理员,我已经运行我的 AWS ec2 实例很长时间了,没有发生过任何意外。它主要为我的 iOS 和 Web 应用程序及其 Web 连接提供支持。

最近我不得不更新我使用的 iOS Web 服务框架,而更新上线后,我的服务器就一直出现故障。我可以通过 SSH 进入我的实例,但任何通过 iOS 服务器调用或 Web 访问的外部连接尝试都会无限加载。

我与 AWS 支持人员反复沟通,他们说我的 NetworkIn 看起来有点高。我目前的解决方案是,当它出现故障时,重新启动服务器,它通常会恢复一段时间,但最近几天,由于新年的到来,我的流量急剧上升,重新启动后,它最多只能保持一分钟的可访问性。

我将 MaxRequestWorkers 从 150 增加到 250,到目前为止,这是唯一能让我的服务器保持可访问性的方法。我刚刚这样做了,到目前为止,它已经保持活动状态约 30 分钟,没有发生任何事故。

我不确定根本原因是什么,甚至不知道去哪里寻找解决方案或雇人来尝试帮助我解决它。

任何正确的方向都将不胜感激,如果你需要更多信息,请告诉我

答案1

您的问题没有单一的方法。这可能是 DoS 或只是配置错误。这可能是与 Apache 相关的任何内容(或不相关)。
我可以说说我通常会做什么:

  1. 这真的是 Apache 的主要原因吗? 正如您刚才所说的网络流量(不是专门针对 Web 的),只需使用top或之类的软件htop(我更喜欢)仔细检查即可。您将获得一个进程列表,您可以根据不同的标准对其进行排序。您还可以查看系统中哪些部分最繁忙(CPU、内存等)。

  2. 好的,这是 Apache,但是:是什么导致了资源使用量的峰值

    • 访问日志:查看访问日志(/var/log/apache2/access.log如果有Ubuntu)。例如,是否有大量带有奇怪请求的错误代码?403 - Forbidden404 - Not found。如果是这样,您可能受到自动化工具的攻击。这是一个非常笼统的解释(我想强调这一点),但一段时间后,您将能够从日志中理解它(查看从 Apache 日志中识别 DDoS例如
    • 日志:除了尝试跟踪日志流之外,还可以尝试使用为此构建的工具对其进行分析。我喜欢GoAccess。这是一个非常简单而强大的工具,可以扫描您的Apache日志并生成一些有用的统计数据(这里有很好的解释GoAccess 网页
    • Apache 统计数据:您可以使用mod_status。这是一个Apache为您创建有关您的网络服务器的一些统计信息的模块。您可以访问这些统计数据,连接到网页并查阅它(这是对其用法的一个很好的解释mod_status 教程
    • 其他原因:资源真的很忙吗?或者您只是有许多Apache进程在等待答案,例如DB?在大多数情况下,DB是 Web 架构的瓶颈。也许是超载了,无法及时响应请求,因为例如,您在特定表上有一个阻塞查询。尝试使用检查它netstat -atulnp | grep apache,查看目标和所有请求的状态

这实际上是一份要完成的无限任务的列表。这些是开始的任务(恕我直言)。如果您发布更详细的信息,我可以更具体地说明您的情况。

相关内容