2012-07-10 102 views
0

我的网站当前收到以下错误消息:Error establishing a database connection。如果我继续/ phpma,我收到:#1040 - Too many connections分析连接以诊断“连接太多”错误

如果我重新启动mysqld,问题暂时消失。

不幸的是,它现在已经回来了三次。

我的专用盒子也从8Gb降到1GB以内。

Total Memory 8181984 kB 
Free Memory 99344 kB 
Total Swap Memory 1051064 
kB Free Swap Memory 0 kB 

如果我进入mysql在服务器上,并执行SHOW PROCESSLIST,我收到以下信息:

| 17181 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po | 
| 17182 | my_db | localhost | my_db | Query | 35118 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17183 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po | 
| 17184 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po | 
| 17185 | my_db | localhost | my_db | Query | 35041 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'akysis-vespa' AND wp_posts.p | 
| 17186 | my_db | localhost | my_db | Query | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','profiledotline-gif') A | 
| 17187 | my_db | localhost | my_db | Query | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','picarrow-gif') AND (po | 
| 17188 | my_db | localhost | my_db | Query | 35043 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17189 | my_db | localhost | my_db | Query | 35041 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','marginal') AND (post_type = | 
| 17190 | my_db | localhost | my_db | Query | 34989 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17191 | my_db | localhost | my_db | Query | 34989 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('w','wet-dry-filter') AND (post_ | 
| 17192 | my_db | localhost | my_db | Query | 34990 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17193 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'corydoras-sterbai' AND wp_po | 
| 17194 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17195 | my_db | localhost | my_db | Query | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17196 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17197 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17198 | my_db | localhost | my_db | Query | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17199 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17200 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17201 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph | 
| 17202 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 17204 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17205 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'sawbwa-resplendens' AND wp_p | 
| 17206 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts | 
| 17207 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-boesemani' AND | 
| 17208 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'betta-prima' AND wp_posts.po | 
| 17209 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 17210 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17211 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17213 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17214 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17215 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type | 
| 17216 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17217 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17218 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts | 
| 17219 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph | 
| 17220 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'betta-prima' AND wp_posts.po | 
| 17221 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17222 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17223 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17224 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hemichromis-lifalili' AND wp | 
| 17225 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17226 | my_db | localhost | my_db | Query | 34862 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'apistogramma-borellii' AND w | 
| 17227 | my_db | localhost | my_db | Query | 34863 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-lacustris' AND | 
| 17228 | my_db | localhost | my_db | Query | 34862 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-lacustris' AND | 
| 17229 | my_db | localhost | my_db | Query | 34861 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'mikrogeophagus-altispinosus' | 
| 17230 | my_db | localhost | my_db | Query | 34861 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID = 25503 AND wp_posts.post_type = 'atta | 
| 17231 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w | 
| 17232 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17233 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type | 
| 17234 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17235 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 17236 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17237 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 17238 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','migrate') AND (post_type = | 
| 17239 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hemichromis-lifalili' AND wp | 
| 17240 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17241 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 17242 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17243 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17244 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph | 
| 17245 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17246 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page | 
| 17247 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 17248 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'geophagus-brokopondo' AND wp | 
| 17249 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hyphessobrycon-amandae' AND | 
| 17253 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN | 
| 17255 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type | 
| 17260 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('s','silver-sand') AND (post_typ | 
| 17262 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page | 
| 25505 | root  | localhost | NULL  | Query |  2 | NULL       | SHOW PROCESSLIST                      

我试图与--log-slow-queries[slow-queries]标志运行mysql,但它似乎并没有这样做任何事 - 我至少在我的包装箱的任何地方找不到一个名为slow-queries的文件。

我猜这是一个可疑的查询的地方,但我不知道从哪里开始寻找!


编辑:点击数和设置

  • MySQL是当前正在运行的500个并发连接
  • 一个最大
  • PHP的内存限制是相当高的(大约1GB),因为我是想一些性能测试在脚本上
  • 仅此网站(包装上有其他人;目前全部受此错误影响)每周接收约30,000名独立访客和250,000次点击
+0

本网站接收第二个点击次数是多少?如果提高连接限制,它会消失还是只是需要更长时间才能发生问题? – 2012-07-10 09:39:51

+0

我已将此信息添加到我的OP。由于该网站已经建成,max_connections已经是大约5年的默认值,但这突然发生在几乎一夜之间。昨晚我把max_connections设置为500,今天早上醒来时发生了同样的问题。 – dunc 2012-07-10 09:43:28

回答

1

在我的高负载水平的wordpress经验(我假设它是基于表名称的wordpress)对于慢速查询来说相当糟糕。一旦表格达到了一定的大小(邮政表格是这里的主要问题),查询速度非常缓慢,您需要进行优化以保持速度。

在MySQL优化术语中,它涉及将多少内存分配给缓冲区和MySQL的查询缓存,对于wordpress而言,其关于尽可能多地从数据库卸载。

有一些不同的东西,你可以从堆栈底部的顶部做:

  1. WordPress的优化。简而言之,删除未使用的插件,添加页面缓存(W3 Total Cache是​​黄金标准),尽可能多地从数据库中卸载。同时着眼于减少您为每个帖子存储的“修订”数量(see here)。对于一个有5年历史的网站,您可能会有比修改帖子更多的修改版本,这会降低帖子查找速度(代码段中的查询全部是帖子查找)。

  2. MySQL优化。这是一个棘手的问题,只是因为你可以调整一大堆表盘,找到合适的平衡是一种黑暗艺术。在那里有很多文章和教程,我没有任何具体的建议,但一个简单的谷歌会抛出大量的信息,你可以做你的my.cnf文件的调整。

+0

该网站只在WordPress上使用了2个月左右。由于它是直播,我只允许每个帖子3修订。 – dunc 2012-07-10 10:19:34

+0

不够公平,但其他方面仍然存在 - 我曾经管理过25个流行的WordPress网站,每周有30k个独立版本,这个网站正好适合我遇到问题并需要查看缓存和mysql调优。 – 2012-07-10 10:24:57

+0

好的很酷。我找到了一些调整脚本,所以我现在试图破译这些脚本。谢谢 – dunc 2012-07-10 10:30:27

1

你可以试试这个追赶慢查询:

在/etc/my.cnf中文件,该文件是mysql的配置文件

把这两个线下部分的[mysqld]

slow_query_log_file=/var/log/mysql-log-slow-queries.log 
long_query_time=2 

希望得到这个帮助。