免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2941 | 回复: 8
打印 上一主题 下一主题

求助:如何调整MySQL最大连接数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-24 14:43 |只看该作者 |倒序浏览
服务器可用内存为4个G,目前只作为数据库服务器使用,没有其他业务。上面部署了7个数据库,只有两个数据库访问比较频繁,但是数据库规模都相当小,所有数据库的容量之和不超过2G,而且所有数据库均为MyISAM引擎。

自动切换到这台服务器之后(大约有一个多月),应用服务器就不时的出现连接不到数据库的错误,截至目前大约出现了6-7次。检查了下错误信息,每次都提示“mysql Can't create a new thread (errno 11)”,大概的意思是说无法创建新的数据库连接,但是检查了下出现错误的时候DB服务器还有剩余内存可以用,而且连接数大概在1000上下,远远没有达到设置的4000个最大连接数的显示。这个错误出现的时间上没有什么规律可循,有时候是在晚上,有时候是上午,中午也出现过,推测不太像是访问高峰带来的负载不足。

摘了几个MySQL的配置,如下:

max_connections                4000
max_user_connections        0

connect_timeout                10
lock_wait_timeout        31536000
wait_timeout                28800

join_buffer_size        8388608
key_buffer_size                268435456
myisam_sort_buffer_size        67108864
read_buffer_size        131072
sort_buffer_size        524288

这些是我认为可能导致问题的相关配置,小弟认为这个错误应该是哪里配置有问题,但是目前找不到头绪。图片是最近一次出现类似问题的时候对数据库连接数的检测图表,蓝色的柱状图代表当时数据库的连接总数,可以看到连接数正好是卡在1000的位置(淡黄色线)就无法继续增加了。不知道各位高手之前有没有处理过类似的情况,希望不吝赐教,感谢!

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
2 [报告]
发表于 2012-05-24 15:08 |只看该作者
一般这个报错就是mysql没有办法获得创建一个thread所必须的内存。

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections
268435456 + (131072+52428*1000 = 880M

同时你部署了7个数据库,应该是内存不足了

论坛徽章:
0
3 [报告]
发表于 2012-05-24 16:14 |只看该作者
cenalulu 发表于 2012-05-24 15:08
一般这个报错就是mysql没有办法获得创建一个thread所必须的内存。

key_buffer_size + (read_buffer_size ...


感谢指点。无奈我也是刚刚接触MySQL,还是被迫的,可能有些知识了解的不是很多。我印象中虽然“read_buffer_size”和"sort_buffer_size"这两个值针对的是数据库中的每个会话,但是剩下的配置似乎都是针对整个服务器的吧?还是说key_buffer_size是为每个数据库保留配置大小的内存空间?

而且出现问题的时候从监测数据上看,数据库的内存大概还有20%左右,大概800M上线。我倒是也怀疑过是不是内存耗尽的原因,不过事实上确实还有空余的内存空间,而且交换分区也并没有使用太多

论坛徽章:
0
4 [报告]
发表于 2012-05-24 17:00 |只看该作者
mysql连接相关的参数我知道的有:max_connections,max_user_connections,ulimit -n,ulimit -u
这四个参数,如果出现错误的时候DB服务器还有剩余内存可以用的话,检查下这四个参数吧。
ulimit -n linux打开的最大文件数
ulimit -u linux可以创建的最大连接数

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
5 [报告]
发表于 2012-05-24 17:02 |只看该作者
嗯, ulimit -n 和 -u 的默认都是1024 可以check下看看

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
6 [报告]
发表于 2012-05-25 10:45 |只看该作者
恩,多半是文件描述符和单开线程的限制。需要修改limit.conf

论坛徽章:
0
7 [报告]
发表于 2012-05-28 10:49 |只看该作者
回复 1# caibird1984


    由于 你的内存不足引起的。你的最大连接数不要设置那么多。你这么小的内存500就足够了。
连接的老化时间设置断一点。

论坛徽章:
0
8 [报告]
发表于 2012-05-31 10:41 |只看该作者
cat /etc/security/limits.conf   用户文件描述符的限制吧?

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
9 [报告]
发表于 2012-06-11 16:01 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP