apache日志 – 请求列出很长的延迟

我正在使用Apache / 2.2.15(Unix)。 在一个特定的项目中(使用php 5.3),日志会在请求执行后(40-50分钟)很长一段时间显示一个请求(从一个复杂的forms发布POST)。

有时请求超时; 有时(正如用户所声称的)它正常运行。 但是我无法解释请求发出和logging时间之间的大的时间转换。

你有什么想法,为什么会发生这种情况? 你有没有发现过类似的东西?

下面的一些日志行:

[12/Oct/2015:11:32:01 -0500] "GET /adm/manageCompanies.php.... [12/Oct/2015:11:32:04 -0500] "GET /adm/manageCompanies.php.... [12/Oct/2015:**10:25:00** -0500] "POST /adm/manageCompanies.ph.... [12/Oct/2015:11:32:04 -0500] "GET /adm/manageCompanies.php.... [12/Oct/2015:11:32:08 -0500] "GET /adm/manageCompanies.php.... 

大胆的时间线是问题 – 它被完全logging下来…

下面还有一个例子:

 [13/Oct/2015:08:18:05 -0500] "POST /adm/manageCompanies.php.... [13/Oct/2015:08:18:05 -0500] "GET /adm/manageCompanies.php .... [13/Oct/2015:08:22:53 -0500] "GET /adm/manageCompanies.php .... [13/Oct/2015:**07:37:37** -0500] "POST /adm/manageCompanies.php.... [13/Oct/2015:08:32:48 -0500] "GET /adm/manageCompanies.php .... [13/Oct/2015:08:32:50 -0500] "GET /adm/manageCompanies.php .... 

我怎样才能找出这个问题的原因? 这不是一个logging的问题,但提交的表格超时,造成“损害”。

这一次是Apache收到请求的时间。

Apache完成请求后写入日志。

你可以检查服务器状态哪些请求太长,当你得到一个,拿他的PID。

然后你可以通过这个过程来看看它在做什么:

strace -t -tt -p PID

然后,lsof可以帮助您查看文件描述符标识(连接到数据库,web服务…)

我通常启用请求持续时间日志logging,请参阅%D这里:

http://httpd.apache.org/docs/2.2/mod/mod_log_config.html

它打印满足请求所需的以微秒为单位的时间。 这样你就可以很容易地find哪个scrpits是最慢的。

这就是说,在你的情况下,我会开始debuggingmanageCompanies.php脚本,也许在脚本的“战略”和平中添加一些echo或print_r的某些文件,从处理POST方法的部分开始,在循环之前和之后,数据库查询,写一个时间戳和例如“开始循环富/结束循环富”,希望你有这个想法。