我在运行在apache上的站点有间歇性的问题 – 这些框会自发地将自己变成一个混乱的过程,占用所有可用的CPU和内存。 为此,我决定给一个名为mod_log_slow的apache模块一个镜头,看看是否可以深入到底层。
这是什么mod_log_slow返回您的平均请求,如果它需要超过1秒:
VFz-@RFSe6WBtx2tOdv0qgAAAAw [07/Nov/2014:12:23:05 -0500] elapsed: 1.25 cpu: 0.04(usr)/0.01(sys) pid: 8059 ip: 1.2.3.4 host: www.example.com:80 reqinfo: GET /dining?start=20& HTTP/1.1
通过查看源代码 ,你可以看到这个日志是如何生成的,但是它应该是相对自我膨胀的。
不过,我很快就发现缓慢的日志中有一些线条像拇指一样伸出手来。
1f7b:545d003d:0 [07/Nov/2014:12:24:13 -0500] elapsed: 53.33 cpu: 0.02(usr)/0.00(sys) pid: 8059 ip: 1.2.3.4 host: (null):80 reqinfo: (null)
没有主机? 没有要求? 没有唯一的ID? 持续53秒? 我在正常访问日志中也find了确切的请求,但同样令人困惑:
1.2.3.4 - - [07/Nov/2014:12:24:13 -0500] "-" 408 - "-" "-"
广泛的体育运动在这里发生了什么?
这些日志行可以来,如果你打开一个连接到你的服务器端口80像telnet 1.2.3.4 80或nc 1.2.3.4 80
但不要发送任何东西,只是等待超时。
它可以是从严重的脚本到testingDOS攻击(检查slowloris)的任何东西。 但从你的日志行看来,这不是你的CPU问题的原因。