解释
在装有 CentOS(2GB RAM,2 核)的 XEN VPS 上有一个 wordpress 网站,访问量一般,以前在廉价的共享主机上运行,没有出现此类问题(因其他原因转移)。
- 数据库中有 132 个表
- 数据库总大小 40MB
- 最大表为 22MB,5000 行
- 大多数(96%)
select
查询,平均select
每小时 20 万个查询。
MySQL 网络流量:
----------------------------------
| Traffic | per hour |
----------------------------------
| Received | 64.6 MiB |
| Sent | 1.5 GiB |
| Total | 1.5 GiB |
----------------------------------
free -m
结果:
total used free shared buffers cached
Mem: 1868 1636 232 4 32 1113
-/+ buffers/cache: 490 1378
Swap: 1023 57 966
问题
每 4-5 小时就会出现两次错误,如下所示:
大量 (20-40) 此错误:
Error while sending QUERY packet. PID=XXXX in ...wp-db.php on line 1942
此错误中的一些(3-5):
mysqli_query(): MySQL server has gone away in ...
这种情况会持续几秒钟或最多 5 分钟,然后在接下来的 4-5 个小时内完全没有任何错误。
我做了什么
据我了解,这与有关max_allowed_packet
,所以我尝试了从 256M 到 900M 的值,但没有成功,也修改了一些其他配置,但之后又恢复了。
当前my.cnf
文件如下(问题开始发生时它是空的):
[mysqld]
max_allowed_packet=524288000
open_files_limit=15000
wait_timeout=70
connect_timeout=70
非常感谢任何建议或帮助。
答案1
您还可以尝试增加 innodb_buffer_pool_size此主题。这在过去曾帮助过我。