CentOS 7中MySQL连接数被限制为214个的解决方法
发现问题
最近在项目中遇到一个问题,由于连接数过多,提示“Toomanyconnections”,需要增加连接数。
我在/etc/my.cnf中修改了:
max_connections=2000
但是,实际连接数一直被限制在214:
mysql>showvariableslike"max_connections"; +-----------------+-------+ |Variable_name|Value| +-----------------+-------+ |max_connections|214| +-----------------+-------+ 1rowinset
思考
如果我设置连接小于214时,比如200,那么实际连接数就是200,也就是说,我的配置文件是没有问题的。
查MySQL官方文档,里面说了:
ThemaximumnumberofconnectionsMySQLcansupportdependsonthequalityofthethreadlibraryonagivenplatform,theamountofRAMavailable,howmuchRAMisusedforeachconnection,theworkloadfromeachconnection,andthedesiredresponsetime.LinuxorSolarisshouldbeabletosupportat500to1000simultaneousconnectionsroutinelyandasmanyas10,000connectionsifyouhavemanygigabytesofRAMavailableandtheworkloadfromeachislowortheresponsetimetargetundemanding.Windowsislimitedto(opentables×2+openconnections)<2048duetothePosixcompatibilitylayerusedonthatplatform.
Increasingopen-files-limitmaybenecessary.AlsoseeSection2.5,“InstallingMySQLonLinux”,forhowtoraisetheoperatingsystemlimitonhowmanyhandlescanbeusedbyMySQL.
大概意思是MySQL能够支持的最大连接数量受限于操作系统,必要时可以增大open-files-limit。换言之,连接数与文件打开数有关。
解决方法
[root@sqzr~]#ulimit-n 1024
可知,操作系统最大文件描述符限制为1024。
更改MySQL在Linux的最大文件描述符限制,编辑/usr/lib/systemd/system/mysqld.service文件,在文件最后添加:
LimitNOFILE=65535 LimitNPROC=65535
保存后,执行下面命令,使配置生效
$systemctldaemon-reload $systemctlrestartmysqld.service
实际连接数到2000了,解决
mysql>showvariableslike"max_connections"; +-----------------+-------+ |Variable_name|Value| +-----------------+-------+ |max_connections|2000| +-----------------+-------+ 1rowinset
参考
https://dev.mysql.com/doc/refman/5.7/en/too-many-connections.html
https://www.oschina.net/question/853151_241231
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。