CentOS7上MySQL返回Too many connections

被这个问题困扰了一天,今天做微信开发,流量一大,django占用CPU很大,这个比较好解决,加进程加硬件即可。然而数据库连接开始报Too many connections,查了网上一些文章,直接改/etc/my.cnf加入max-connections=3000,无果。又查,在mysql里输入set GLOBAL max-connections=3000,数值是变了,然并卵。

刚才找到一个文章,才想起原来是CentOS7的systemd限制了服务进程的NOFILE,导致每次启动mysql服务后,查询max-connections一直是214,这个数字可能是默认的最大值吧。解决方法如下:

编辑 /usr/lib/systemd/system/mysqld.service,加入:
LimitNOFILE=infinity
LimitMEMLOCK=infinity

困扰整天的问题终于解决,撰文记下。

参考文献:

http://www.nethings.eu/quick-picks/mysql-max-connections/

CentOS7上MySQL返回Too many connections》上有5条评论

    1. Xiaoxia 文章作者

      程序是多进程和多线程混合的,因为没有使用异步,所以并发大的时候,自然会产生很多连接。 最好的解决方法可能是使用redis等缓存mysql里的频繁数据。要看是否值得花时间去优化了。

      回复

会跳舞的鞋子进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>