Apache 的首字节时间 [TTFB] 有时很高。有什么方法可以确定原因?

Apache 的首字节时间 [TTFB] 有时很高。有什么方法可以确定原因?

我想知道为什么 Apache 有时会处理请求非常慢。大多数时候,“第一个字节的时间”是足够的(约 90 毫秒),但有时会出现超过一秒的峰值。

我正在监控三个 PHP 页面:

  • 首页
  • 画廊页面
  • 详细信息页面

并作为参考

  • 静态 HTML 页面

虽然 PHP 页面有时(不是定期)会达到一秒或多秒,但静态 HTML 页面不会受到响应时间缓慢的影响。同样值得注意的是,这三个 PHP 页面的处理时间峰值几乎一致。

为了监控我运行卷曲在同一网络中,直接向 Web 服务器 (主机名) 发送请求。请求不经过任何缓存。监控到的处理时间按如下方式计算:

从开始发送请求所需的时间减去从开始到接收到服务器第一个应答字节的时间。

这三个 PHP 页面使用 memcached (127.0.0.1) 和来自 MySQL (host: hostname) 数据库的内容。Apache 配置了 PHP-FPM (socket)。

负载、CPU、内存、磁盘利用率以及名称解析时间似乎没有问题。

对 memcached 状态进行一点压力测试,发现它持续快速响应。我认为问题范围可能在于数据库。我在 Server Fault 的另一篇文章中读到,某些系统或内核参数可能会导致此行为。不幸的是,我不知道哪些参数通常适用于这种情况。

我可以 strace apache 和/或 xdebug php - 但第一个字节的缓慢时间每隔几个小时就会出现一次。所以我可以尝试调试几个小时,而不会出现处理缓慢的情况。

所以我的问题是:你有什么提示吗,我该如何具体调查这个问题?关于另一篇文章:是否有典型的系统/内核参数,我应该仔细查看一下?

谢谢,
sdev

相关内容