网站性能,缓存无法正常工作


8

在此处输入图片说明

我正在使用性能日志记录模块。在屏幕快照上方,有一件奇怪的事我注意到在每个页面上都插入Cache_bootstrap。当您转到任何页面(管理主题和前端主题)时,请插入缓存,然后删除缓存正在运行。这意味着在每个页面中设置和销毁了缓存,实际上没有缓存发生。我该如何进一步阐述呢?为了诊断该问题,因为当前我正在研究网站的性能。

在此处输入图片说明

我还在使用New Relic进行性能检查。它还表明数据库负载很高。

和my.cnf信息。

在此处输入图片说明

Answers:



3

允许的最大数据包大小可能是发生这种情况的原因之一,但我可以看到多种原因,在这种情况下它可能是其他原因。

  1. 您不仅具有缓存写操作,还具有显式的缓存删除功能。失败的高速缓存写入只会导致重复高速缓存写入,然后导致高速缓存未命中,但不会导致删除。
  2. 这是cache_bootstrap表。有一些缓存可能会变大,但它们通常不是来自该bin。

这种模式的最常见原因是在每个页面上发生的variable_set()调用。查看使用xhprof,xdebug和设置断点或添加debug_print_backtrace(DEBUG_BACKTRACE_NO_ARGS)这些高速缓存删除的来源。我很确定您会在其中看到一个variable_set()调用。

问题在于,变量只有一个全局缓存。每次缓存写入都会导致缓存删除,下一个请求将读出整个{variables}表并将其写回到缓存中。

许多开发人员对此并不了解,而是通过直接在.module文件或在每个请求中执行的另一个位置中调用variable_set()来执行诸如“确保值”之类的事情。


是的。多数开发人员都这么认为,甚至我都不知道您所讨论的variable_set()事实。并且我也了解debug_print_backtrace(DEBUG_BACKTRACE_NO_ARGS)。感谢那。:)
J先生

3

这只是一个假设,但是如果您的引导程序缓存在每次页面加载时都重建,则可能会发生一些模块丢失在modules文件夹中但仍然存在于系统表中的情况。在每个页面上,加载drupal尝试找到它并重建bootstrap_cache。

尝试使用Bootstrap优化器模块,它将有助于查找和删除此类记录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.