当前位置:项目开发->项目经验 ->mysql的max_connections过多问题解决办法

原创版权标志mysql的max_connections过多问题解决办法

作者:codexia  发表时间:2018/6/28 13:58:03  阅读:
[摘要] 最近发现mysql一个奇怪的问题,好好的代码,运行一段时间后,数据库操作就失败了。一开始以为是操作了多个数据库,可能是数据库串了,经过检查,确实没有错。后来在Navicat工具刷新数据的时候,提示了mysql的连接数过多的问题(connections too many)。因为此前也出现过这样的问题,没想到现在又出来了。
使用支付宝扫码领红包,余额宝付款才可以使用红包哦!不要忘记哈。每天扫一次,天天赚红包!!可以将二维码保存到手机,每天直接扫码领红包啦!!

        最近发现mysql一个奇怪的问题,好好的代码,运行一段时间后,数据库操作就失败了。一开始以为是操作了多个数据库,可能是数据库串了,经过检查,确实没有错。后来在Navicat工具刷新数据的时候,提示了mysql的连接数过多的问题(connections too many)。因为此前也出现过这样的问题,没想到现在又出来了。

        所以决定还是写一篇文章记录一下。以为我们需要通过修改配置文件来彻底解决这个问题。

        出现数据库连接数过多的问题,一方面可能是程序连接真的太多了,因为业务量大;另一方面则可能是代码结构设计不合理,导致大量的连接,短时间大量出现,并发总连接数超出限制,而且连接数的断开较慢。

        默认的情况下,mysql的最大连接数好像是150,不是十分确定。反正这个数很小,在程序短时间有大量的连接的时候,就可能超过这个限制,而导致数据库操作失败。

        从程序上优化连接数问题,不在这里讨论,我们来说说修改mysql配置文件。

    [mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connections=1000
thread_cache_size=1000
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
    

            这是mysql数据库的配置文件。其中:     

    

        max_connections=1000
thread_cache_size=1000    

    

            是额外加上的。max_connections表示最大连接数,thread_cache_size表示缓存的线程数。max_connections不要放在[mysqld_safe]后面,可能不起作用,要放在前面哦。修改了配置文件后,要重启mysql。    

    

            在数据库查询工具或mysql命令行执行语句:    

    

        show variables like 'max_connections'    

    

            可以查看最大连接数。如果要查看实时的mysql连接数,执行:
    

    

        show status like 'Threads%'    

    

            结果如下:    

    

        
    

    

            Threads_connected表示当前的连接数,Threads_created表示创建过的连接数,Threads_running表示正在运行的连接数,即并发连接数。Threads_cached表示缓存的连接数。配置文件里的thread_cache_size即可设置这个缓存最大值。    

微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)