打开多个帖子编辑器页面时,MySQL CPU使用率激增

时间:2021-07-07 作者:Good Muyis

我正在管理WordPress server 2Core CPU 8Gb Ram,托管在Openlitespeed+MariaDB 11.4和PHP 7.4上。已安装Redis和OPache。在WordPress网站上,Redis Object CacheLitespeed LSCache 是否已安装并启用插件。

内存限制:512MB,最大执行时间:120

该网站有超过140k篇帖子,浏览网站页面和内容是一种流畅的体验。

但问题是,每当编辑器登录创建帖子时,CPU使用率就会激增到90%或更多。和wp管理员/新发布。php变得像蜗牛一样慢,有时我需要几分钟才能准备好,有时会崩溃,发布按钮会变灰。当他们打开多个wp admin/post new实例时,情况会变得更糟。php。

enter image description here

我尝试禁用所有插件,在禁用插件的情况下更改主题,但无法修复。

如果禁用Classic Editor,使用默认的Gutenberg编辑器,效果只会好一点。

安装时的测试和发现Query Monitor 我发现,在其他选项卡或wp-admin/post-new.php 它最多可以读取100秒,有些情况下会使站点停止响应。

SELECT DISTINCT meta_key 
FROM wp_postmeta
WHERE meta_key NOT BETWEEN \'_\'
AND \'_z\'
HAVING meta_key NOT LIKE \'\\\\_%\'
ORDER BY meta_key LIMIT 30

enter image description here

我认为在VPS和Redis缓存对象上安装Redis会提供更好的性能。这可能是真的,因为除了运行上述查询的post editor页面之外,网站的其他部分都在快速加载。

目前,我已经禁用了经典编辑器,但用户(编辑器)更喜欢它。请问我需要做些什么来优化网站?

1 个回复
最合适的回答,由SO网友:Good Muyis 整理而成

经过一夜的网络搜索,我发现这个问题很常见,而我在上面发布的相同查询就是罪魁祸首。根据WordPress Post Editor Performance, 这是由于Slow meta_form() database query

他提供的最安全的解决方案是函数的一段代码。php。我做到了,我经历了很多变化。请参见下面的代码:

/**
 * Remove Ancient Custom Fields metabox from post editor
 * because it uses a very slow query meta_key sort query
 * so on sites with large postmeta tables it is super slow
 * and is rarely useful anymore on any site
 */
function wpse391530_remove_post_custom_fields_metabox() {
     foreach ( get_post_types( \'\', \'names\' ) as $post_type ) {
         remove_meta_box( \'postcustom\' , $post_type , \'normal\' );   
     }
}
add_action( \'admin_menu\' , \'wpse391530_remove_post_custom_fields_metabox\' );
您可以在上面发布的文章链接上阅读有关解决方案的更多信息