php - 什么会导致 "too many database connections"

标签 php mysql wordpress

我的 Wordpress 网站收到“建立数据库连接错误”消息。

我的主机告诉我这是因为我的“用户”有太多同时打开的数据库连接。这导致了建立额外连接的错误,从而导致了按摩。

这已通过终止死锁的数据库连接得到纠正。有许多连接将数据复制到临时表,但死锁是由等待一次更新的大量查找引起的。

有人可以向我解释这可能是如何发生的,以及如何避免这种情况吗?

(p.s:WP 安装有 2000 多个帖子)

最佳答案

我看到对 WP 和数据库速度有很大帮助的一件事是清理您的帖子和页面修订数据库。 WP 保留每个编辑修订的完整副本,如果有 2000 个帖子,您的数据库可能会非常庞大​​。在 phpmyadmin 中将其作为 SQL 查询运行以清除修订。我已经看到数据库的大小下降了 75%,并且在清除修订后运行得更快。如果在安装 WP 时更改了表前缀,请更改表前缀,并事先运行备份。

删除 a、b、c 来自 wp_posts LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) 左加入 wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'

然后在运行该查询以完成清除修订后优化表,可以从 phpmyadmin 中的下拉菜单优化整个数据库,也可以通过另一个仅针对 posts 表的查询:

OPTIMIZE TABLE wp_posts;

然后您可以通过将此行添加到 wp-config.php 以停止修订来防止帖子/页面修订再次累积:

定义 ('WP_POST_REVISIONS', FALSE);

或者这一行来选择要保留的修订数量:

define('WP_POST_REVISIONS', 3);

如果您有权访问您的 MySQL 配置文件,请考虑使用类似 GitHub - major/MySQLTuner-perl 的实用程序调整 MySQL 以获得更好的性能.

关于php - 什么会导致 "too many database connections",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3898252/

相关文章:

php - 未选择数据库

php - foreach 循环里面的 while 循环在 php 中给出了意想不到的结果

html - 使用带有自定义字体的 Font Awesome 动画

php - CakePHP:将计算字段从另一个模型连接到模型

php - 使用 yii2-widget-depdrop 扩展找不到 Yii2 app\controllers\response

php - Symfony2 : How to use INSERT DELAYED with doctrine or create a non-blocking database operation?

php - 如何允许后台进程在 session 终止后继续存在?

mysql - 使用 bash 从 csv 文件导入日期到 mysql

css - 我需要向我的 Wordpress 站点添加什么特定于 ie 的 CSS 才能解决此问题?

php - CentOS 7 - 更新默认存储库中未找到的软件包