如何诊断高负载的Web服务器locking

我有麻烦了解什么问题可能会导致服务器突然高负载峰值偶尔挂起。 我不是一个系统pipe理员(我是一名PHP程序员),但由于官方系统pipe理员相当缺乏努力,我被要求自己找一个解决scheme。

服务器运行在Debian Lenny上,通过apache提供一个基于wordpress + vbulletin的站点,每天访问40-60k次。 在完成所有应用程序端的优化之后,我们可以确定网站运行的情况,甚至几个星期,然后跳到一些使服务器负载跳到80+以上的情况。 停止Apache重新启动它有助于,但它通常会自己平静下来,如果有足够的时间。 它可以在一天内“崩溃”两次,或几个星期没有问题。 这似乎是完全随机的。

一个奇怪的具体事情发生了。 我被警告一个奇怪的行为,经过检查,我发现.htaccess文件改变为redirect来自search引擎的stream量到一些外部网站。 我检查了代码和每个插件(全部是最新的),最后尝试了“hard way” chown ing .htaccessroot.root 。 奇怪的是,当另外一个问题出现的时候,我发现这个文件改回归属于分配给网站虚拟主机的用户。 我知道这种事情没有办法通过某种networking攻击来实现,或者我错了吗?

我怎样才能find这个高负载尖峰的原因?
什么可以解释一个root.root文件更改权限,其他的人有root权限呢?
这两件事情可能与某种攻击有关吗?

关于Apache问题,一个可能的原因是您的MaxClient / MaxServer设置太高。 当你遇到stream量高峰时,你用完所有的内存,并导致Apache开始使用交换,这将很快导致你的性能下降。 下一次你有问题检查顶部/免费的输出,看看是否正在使用交换。 如果尝试减lessMaxClient / MaxServer值。

我也遇到了一个Apache 1.3的问题,一些连接永远不会closures,几天后有90%的连接不会做任何事情,而不是客户端来处理新的连接。 我每天只需重新启动Apache即可解决问题。 从它的声音,你没有足够的stream量或时间之间的问题,这是一个可能的原因。

这听起来好像有人可能已经损害了您的服务器,更重要的是因为search引擎stream量redirect到不同的网站,而不是因为文件所有权问题。 恐怕一些networking漏洞攻击可以让攻击者root访问您的系统。

我会下载并运行rootkit探测器,如Rootkit Hunter 。 如果你已经扎根,你可能会想让有经验的人来帮助你解决它。

这可能是一个攻击,但为什么只是改变.htaccess文件,可能还有更多的事情要检查。 也许一个PHP脚本自动生成文件。 文件的权限是什么?

关于负载,可能是很多的东西,特别是因为它的随机性。 观察日志并使用工具(webalizer),查看负载峰值是否与访问时间过长或访问特定资源(可能是这种情况)相吻合。

用chkrootkit和类似的工具检查你的服务器来检查是否妥协。 如果发生,你可能需要/想从头重新安装你的服务器。

我知道这种事情没有办法通过某种networking攻击来实现,或者我错了吗?

它本身并不会考虑root权限:root拥有文件的变化 – 但是web妥协可能使攻击者能够在系统上部署恶意软件,从而以其他方式危害系统。 还有其他的方式来妥协一个系统。

如果您确信自上次检查后您的代码没有被修改,那么消除其他任何问题的时间 – 使用rootkit检查程序对于您认为是安全的系统是一个不错的主意 – 但是如果您怀疑自己应该重新格式化/重新安装。

在web服务器上运行# ps -uapache -o wchan=WIDE-WCHAN-COLUMN,cmd在第一个字段中尝试find类似于flock_lock_file_w /usr/sbin/httpd东西。

你的session.save_handler是什么?