我已经使用标准的LAMP堆栈运行Ubuntu 14.04服务器已经有一段时间了,并且通过每天发送的电子邮件让系统每小时平均地使用CPU。 很长时间以来,这个报告大部分时间都是在90年代以前报告CPU空闲时间(这是一个轻载服务器)。
大约一个月前,这个改变了,服务器现在报告空闲时间在80年代,而不是90年代。 top显示apache是大多数CPU的用户:
top - 00:20:43 up 39 days, 22:34, 1 user, load average: 0.34, 0.41, 0.39 Tasks: 165 total, 2 running, 163 sleeping, 0 stopped, 0 zombie %Cpu(s): 10.0 us, 0.7 sy, 0.0 ni, 89.2 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem: 6110180 total, 5500892 used, 609288 free, 232448 buffers KiB Swap: 0 total, 0 used, 0 free. 3502368 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16235 www-data 20 0 503848 77680 41564 S 8.3 1.3 0:04.28 apache2 16124 www-data 20 0 506624 86688 47888 S 8.0 1.4 0:06.23 apache2 16351 www-data 20 0 506456 79224 41364 S 7.3 1.3 0:01.54 apache2 16301 www-data 20 0 506356 78908 41156 S 7.0 1.3 0:02.93 apache2 16102 www-data 20 0 507116 87292 48272 S 6.6 1.4 0:06.88 apache2 1343 mysql 20 0 2670112 540216 8308 S 2.7 8.8 988:08.92 mysqld 16354 www-data 20 0 503248 76144 40636 S 1.3 1.2 0:01.29 apache2 16100 www-data 20 0 507016 80436 41524 S 1.0 1.3 0:07.12 apache2
我挠了一下头,以确定我可能做出什么改变。 在这个时间段内,networkingstream量并没有增加(事实上,这个数字比正常水平还要低),而且我可以坐在apachetop上观看没有任何进展的apachetop 。
我试着在今天晚上应用所有最新的补丁,希望在最近的更新中引入一些暂时的故障,并且已经得到解决,但是无济于事。
然后,我想,这也许是大约在同一时间,我在服务器上安装mod_security。 从那以后我一直在观察模式下运行。 我今天晚上禁用了,并重新启动了Apache,但负载似乎不受改变的影响。
任何人都可以build议我如何诊断Apache正在忙什么? 目前这不是一个主要的问题,但我想在它成为一个之前就明白它了!
事实certificate,这是智利的一些火鸡轮询xmlrpc.php每秒几次在一个WordPress网站上,我没有监控apachetop。 阻止有问题的IP地址很好地解决了这个问题!
如果有人再来这里看,我使用mod_status来帮助我了解这一点。 具体来说,在安装并启用了mod_status的情况下,我启用了其中一个虚拟主机上的/ server-statuspath,如下所示(使用我的客户端PC的当前面向公众的IP地址replace<my-current-ip> ):
<VirtualHost *:443> ServerName myhost.com ... <Location /server-status> SetHandler server-status Require ip <my-current-ip> </Location> ... </VirtualHost>
然后访问https://myhost.com/server-status以获取系统上的Webstream量的完整视图。 这相当迅速地显示了正在讨论的虚拟主机上进入xmlrpc.php脚本的大量stream量。
从那里,我跟踪了该虚拟主机的访问日志,并可以看到活动模式和源IP地址。 那么使用ufw阻塞IP地址的问题如下:
sudo ufw insert 1 deny from <the-bad-ip>
注意:在该命令中使用“插入1”可确保在防火墙configuration中的任何“默认允许”规则(如端口80和443)之前应用“插入1”,否则将filter渲染为巧克力茶壶般无用!