Bluehost无流量却出现Too Many Connections错误求助
问题
我们有一个处于开发阶段的WordPress网站托管在Bluehost虚拟主机上,目前无访问流量,但会随机出现如下错误:
Warning: mysqli_real_connect(): (08004/1040): Too many connections in /wp-includes/class-wpdb.php on line 1775 Too many connections
我所有数据库查询均使用global $wpdb,根据WordPress社区资料,wpdb类会自动关闭连接,按常理仅应有1-2个活跃连接。以下是wp-config.php文件内容:
define('DB_NAME', 'example'); define('DB_USER', 'example'); define('DB_PASSWORD', 'example'); define('DB_HOST', 'localhost'); define( 'DB_CHARSET', 'utf8' ); define( 'DB_COLLATE', '' ); define('AUTH_KEY', 'example'); define('SECURE_AUTH_KEY', 'example'); define('LOGGED_IN_KEY', 'example'); define('NONCE_KEY', 'example'); define('AUTH_SALT', 'example'); define('SECURE_AUTH_SALT', 'example'); define('LOGGED_IN_SALT', 'example'); define('NONCE_SALT', 'example'); $table_prefix = '8zW_'; define('WP_CRON_LOCK_TIMEOUT', 120); define('AUTOSAVE_INTERVAL', 300); define('WP_POST_REVISIONS', 5); define('EMPTY_TRASH_DAYS', 7); define('WP_AUTO_UPDATE_CORE', true); define( 'WP_DEBUG', true ); if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } require_once ABSPATH . 'wp-settings.php';
排查与解决思路
- 确认数据库连接上限与活跃连接:通过phpMyAdmin执行
SHOW VARIABLES LIKE 'max_connections';查看数据库允许的最大连接数,SHOW PROCESSLIST;查看所有活跃连接的来源——Bluehost共享主机的数据库连接配额通常有限,可能是同服务器其他站点占用了资源。 - 排查WP-Cron异常触发:WP-Cron如果锁机制失效,可能重复创建任务导致连接堆积。临时添加
define('DISABLE_WP_CRON', true);到wp-config.php禁用自动Cron,若错误消失,说明是Cron问题,后续改用服务器定时任务替代WP-Cron。 - 检查插件/主题的连接泄漏:虽然使用
global $wpdb,但部分第三方插件或主题可能手动建立额外数据库连接且未关闭。逐一禁用插件、切换到默认主题(如Twenty Twenty-Four),定位引发问题的扩展。 - 修改数据库主机地址:将wp-config.php中的
DB_HOST从localhost改为Bluehost面板提供的专属数据库主机地址(类似mysqlXX.bluehost.com),避免本地套接字的连接复用问题。 - 强制关闭请求结束后的连接:在wp-config.php中添加以下代码,确保请求结束后强制关闭数据库连接:
add_action('shutdown', function() { global $wpdb; if ($wpdb->dbh) { mysqli_close($wpdb->dbh); } }); - 联系Bluehost技术支持:若以上操作均无效,可能是主机端的资源限制或服务器异常,直接联系客服确认是否可临时提升连接数,或排查服务器层面的连接异常。
内容的提问来源于stack exchange,提问作者Doraemon
相关产品推荐
相关产品推荐

