我的服务器目前负载巨大,但我不知道原因。当我使用“top”命令时,有数百个 apache 进程使用命令“aux”,但我在网上找不到任何信息告诉我这意味着什么。负载在 50-150 之间波动,比平时高出 50-150。
Netstat 返回数百行,如下所示:
tcp 0 0 xxx.xxx.xxx.xxx:45216 61.155.202.205:80 CLOSE_WAIT 28863/aux
几乎所有都来自 61.155.xxx.xxx(不确定这是否是相关信息,但尽量提供尽可能多的信息)。
操作系统是 CentOS:版本 5.7 Final 我们只是在其上运行 LAMP 堆栈,其中大约有 30 个网站没有太多负载(或者我是这样认为的)。我检查了所有 vHost 的日志,但似乎没有一个收到很多/任何请求(不足以引起此问题)。我不确定是否还有其他日志我应该检查?
它是几天前开始的;据我所知,服务器上没有发生任何变化。
有人知道我该如何找出导致负载激增的原因吗?我是否遗漏了其他命令/日志,它们可能能够帮助我找出问题所在?
答案1
这没什么联系从61.155.xxx.xxx。这是一个连接到61.155.202.205 上的网络服务器。
看起来您的网络服务器正在向中国境内 ADSL 连接上的其他网络服务器发出 HTTP 请求。尝试tcpdump -n -A -s0 host 61.155.202.205
查看您正在收集什么类型的数据。我怀疑这是恶意的。
如果是恶意的,请参阅我的服务器被黑了!紧急。
“许多 Apache 进程”很可能是造成高负载而不是导致高负载。即使平均负载为 50,我也预计会看到 HTTP 请求需要花费数秒的时间。如果负载达到 150,情况会更糟。
答案2
为了帮助遇到同样问题的人,我来告诉你,问题是由特洛伊木马 ( Trojan.Perl.Shellbot-2
) 引起的。在这里的回答/评论和我在另一个问题中398715,我们做了以下事情:
- 安装并运行
chkrootkit
,但没有找到任何内容 - 安装并运行
clamav
,追踪病毒的名称及其所在位置 - 搜索了其他有同样问题的人,发现这个帖子
- 按照说明删除并清理病毒
- 添加
apache
到cron.deny
文件并重新启动crond
这只是解决方案的一部分;在我们找到漏洞所在之后,服务器仍然需要重建,但这是一个好的开始,我们让服务器恢复正常运行。
如果有人能想到我遗漏了什么、我做错了什么或者可以做得更好,请告诉我。