如何find导致Apache / httpd在如此高的内存使用情况下运行的原因

我有一个网站,当打一个蜘蛛只是把手。 通常一切都很好。 当CPU超过80%时,我们有一个nagios montior来报告。

当我们收到警告时,我开始通过sudo tail -f access_log查看日志。 大多数时候,这是一只蜘蛛。

它似乎被捕获在一个蜘蛛已经与无限数量的查询string值包装的URL。

我试过了:

我已经把Disallow: *?*放在了robots.txt中。

目前的top是:

在这里输入图像说明

在这里输入图像说明

题:

还有其他的方法可以用来告诉蜘蛛在我们的网站上冷静下来吗? 在高内存使用httpd进程,我可以告诉哪些页面调用,以隔离这个网站上的麻烦点吗?

也就是说,我如何find并隔离麻烦制造者?

勘误表:我们使用memcache在RHEL 6.8上运行Apache 2.2.15。

 # apachectl -V Server version: Apache/2.2.15 (Unix) Server built: Feb 4 2016 02:44:09 Server loaded: APR 1.3.9, APR-Util 1.3.9 Compiled using: APR 1.3.9, APR-Util 1.3.9 Architecture: 64-bit Server MPM: Prefork threaded: no forked: yes (variable process count) 

您可以尝试使用lsof来读取由apache进程打开的文件:

 lsof -p PID 

在访问日志中检查Apache日志中是否存在与蜘蛛爬行时间戳相对应的错误也是一个好主意。

我也喜欢用goaccess来帮助parsing日志数据并推断有用的信息:

http://www.hackersgarage.com/goaccess-on-rhelcentos-6-linux-real-time-apache-log-analyzer.html

strace和ltrace也是您可能要考虑用来帮助排除故障的优秀实用程序。