我想知道我的服务器上哪些页面真的很慢。
是否可以将所有渲染时间超过 2 秒的页面记录到一个文件中?
/var/log/php/php-slow.log
或者可以将有关渲染所花费时间的信息添加到 apache-log-files 中吗?
答案1
假设您正在使用 Apache;请参阅此 Stack Overflow 答案:有没有办法让 Apache 记录慢速请求?
看一眼http://httpd.apache.org/docs/2.2/mod/mod_log_config.html。您可以设置一个自定义日志,其中包括处理请求所花费的时间。
例如:
LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time
将把处理请求所花的时间(以微秒为单位)添加为日志文件的最后一个字段。
您可以将该行添加到您的 httpd.conf,然后在您想要使用它的每个虚拟主机中添加此行:
CustomLog logs/access_log_time common-time
您还可以创建一个仅包含您想要的内容的新 LogFormat,可能如下所示:
LogFormat "\"%r\" %D" measure-time
在您的虚拟主机中,您可以有多个日志,因此您可以拥有:
CustomLog logs/access_log common
CustomLog logs/access_log_time measure-time
尽管如此,巨大的警告。这将仅测量服务器提供页面所需的时间。它将不会包括在浏览器中执行任何 javascript 所需的时间。如果您需要测量 javascript 执行时间,则需要使用类似萤火虫。
获得日志后,你可以使用类似Apache日志解析日志文件以仅获取花费时间超过您想要使用的阈值的请求。
我不确定是否可以只记录日志请求并绕过解析步骤。也许可以,但我觉得这需要大量工作。