被这个问题困扰了一天,今天做微信开发,流量一大,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
困扰整天的问题终于解决,撰文记下。
参考文献:
xiaoxia最近忙啥呢?好久i没你消息咯~
哈你还活着→_→
话说记得你说Ubuntu的粉丝才对哈
那都是过去啦,centos的市场占有率更大
一味增加max-connections也不是办法啊……
程序是多进程和多线程混合的,因为没有使用异步,所以并发大的时候,自然会产生很多连接。 最好的解决方法可能是使用redis等缓存mysql里的频繁数据。要看是否值得花时间去优化了。
感谢分享,能解决一些问题