我在具有良好内存(超过8GB)的专用服务器上安装了WordPress。
WordPress安装包含许多插件--50个活动插件。最值得注意的是WPML插件,使WordPress多语言。主题是Weaver II Pro。
堆栈是LAMP - CentOS 6.3,Apache 2.4.4,Percona MySQL,PHP-FPM。
我一直很愚蠢,并没有设置测试或登台服务器。
一直运行正常,直到我更新到WordPress 3.8,并同时更新了几个插件。
当时我没有注意,但我的所有小工具都搞砸了,任何导航等都是如此。
我启用了error_log,即
ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
这导致了一个巨大的文件 - 基本上error_log每4分钟左右增长一个GB。
我在错误日志中发现的主要错误是数据库服务器断开连接,更好地称为
MySQL服务器已经消失
首要任务是修补问题。所以我安装了Database Ping插件。这大多是,虽然没有完全解决问题。许多小部件都回来了。
但是,特殊(非英语)字符全部混乱(转换为问号)。我尝试通过打开wp-mysql-ping.php并注释掉
来解决这个问题if ( !DB_CHARSET && version_compare(mysql_get_server_info($this->dbh), '4.1.0', '>='))
{
$this->query("SET NAMES '" . DB_CHARSET . "'");
}
没有帮助。
此外,该插件不是永久或完整的解决方案。因此,让网站处于混乱状态,我开始研究其他可能性:
根据Rackspace的建议,我编辑了my.cnf以添加
wait_timeout = 60
没有帮助。
还为my.cnf添加了缓存
query_cache_type = 1
query_cache_limit = 8M
query_cache_size = 512M
没有帮助。
(是的,我每次编辑my.cnf时都重启了mysql)
还尝试了方法suggested here: 在wp-db.php中 前
$this->select( $this->dbname, $this->dbh );
我添加了
$this->query("set session wait_timeout=600" );
没有帮助。
我的智慧结束了。请帮忙!
答案 0 :(得分:1)
在my.cnf中添加了max_allowed_packet = 16M并重新启动了mysql。这修复了数据库超时错误。