Drupal ob_flush() 性能缓慢且不稳定

Drupal ob_flush() slow and variable performance

使用 XHProf 分析 Drupal 站点后。我看到 ob_flush() 调用的可变性能,每页只调用一次。

首次加载页面 x

Function   Calls  Ex Wall  Wall %
ob_flush   1      1,712ms  39.5%

第二次加载页面 x

Function   Calls  Ex Wall  Wall %
ob_flush   1      270ms    24.5%

第三次加载页​​面 x

Function   Calls  Ex Wall  Wall %
ob_flush   1      300ms      25.3%

在 php.ini 设置中我禁用了 out_buffering = 0 似乎是对 Drupal 的建议

我看到其他 queries 对此没有提供明确的解决方案。

有没有办法提高这种性能?

看来 ob_flush 函数受到 Drupal bootstrap 之后的一切的严重影响。我启用了实体缓存模块,该模块将用户缓存到 APCcache 并保留到数据库(无法为其他实体禁用它)。缓存意味着要从数据库发送或检索查询数据。这种减慢反映在 ob_flush 中,因为直到内容不完整 generated/cached 或检索它无法刷新。

禁用实体缓存模块后。现在我看到 ob_flush 消耗低于 300 毫秒,这仍然很高,但不像以前那么多变和极高。