发现问题
最近在项目中遇到一个问题,由于连接数过多,提示 “Too many connections” ,需要增加连接数。
我在 /etc/my.cnf中修改了:
max_connections = 2000
但是, 实际连接数一直被限制在 214:
mysql> show variables like "max_connections"; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 214 | +-----------------+-------+ 1 row in set
思考
如果我设置连接小于214时,比如 200,那么实际连接数就是 200,也就是说,我的配置文件是没有问题的。
查 MySQL 官方文档,里面说了:
The maximum number of connections MySQL can support depends on the quality of the thread library on a given platform, the amount of RAM available, how much RAM is used for each connection, the workload from each connection, and the desired response time. Linux or Solaris should be able to support at 500 to 1000 simultaneous connections routinely and as many as 10,000 connections if you have many gigabytes of RAM available and the workload from each is low or the response time target undemanding. Windows is limited to (open tables × 2 + open connections) < 2048 due to the Posix compatibility layer used on that platform.
Increasing open-files-limit may be necessary. Also see Section 2.5, “Installing MySQL on Linux”, for how to raise the operating system limit on how many handles can be used by MySQL.
大概意思是 MySQL 能够支持的最大连接数量受限于操作系统,必要时可以增大 open-files-limit。换言之,连接数与文件打开数有关。
解决方法
[root@sqzr ~]# ulimit -n 1024
可知,操作系统最大文件描述符限制为 1024。
更改 MySQL 在 Linux 的最大文件描述符限制,编辑 /usr/lib/systemd/system/mysqld.service 文件,在文件最后添加:
LimitNOFILE=65535 LimitNPROC=65535
保存后,执行下面命令,使配置生效
$ systemctl daemon-reload $ systemctl restart mysqld.service
实际连接数到 2000 了,解决
mysql> show variables like "max_connections"; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 2000 | +-----------------+-------+ 1 row in set
参考
https://dev.mysql.com/doc/refman/5.7/en/too-many-connections.html
https://www.oschina.net/question/853151_241231
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
问题内容: 我正在尝试从另一个站点获取信息。当我尝试去做 它抛出一个。这是否意味着该站点将不允许自动连接?还有另一种获取此信息的方法吗? 问题答案: 这可能意味着几件事: 该站点有问题并且正在主动断开连接(拒绝与超时不同,拒绝完全没有响应) 中间人可能拒绝了您的连接,例如防火墙,尽管如果您可以通过浏览器访问该站点,则不太可能 您使用了错误的端口,即您输入https://时的意思是http://,反
MySQL timestamp 到2038如何解决 目前MySQL版本8.0.29,尝试了改sql_mode但是没有效果,只能把字段改为datetime吗 MySQL升级到了8.0.36,设置了sql_mode,新建了一张表设置日期超过2038还是不行
本文向大家介绍bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法,包括了bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法的使用技巧和注意事项,需要的朋友参考一下 bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法 1. 开发环境 hibern
我是网络新手,我正在尝试制作一个用于聊天的小型java应用程序。我想要的是ServerSocket接受一个并且只有一个连接。如果第二个Socket尝试连接到ServerSocket,它将引发异常,以便启动套接字的用户知道他无法连接到那个ServerSocket我查看了javadoc并找到了那个构造函数。 创建服务器套接字并将其绑定到指定的本地端口号和指定的积压工作。端口号为0表示自动分配端口号,通
本文向大家介绍php无法连接mysql数据库的正确解决方法,包括了php无法连接mysql数据库的正确解决方法的使用技巧和注意事项,需要的朋友参考一下 即使连接Mysql的语句正确,php也无法连接mysql数据库,出现如下图所示的结果: 首先是在Apache服务器的conf/httpd.conf下的任意位置都没有:PHPIniDir "php压缩目录"这一项。 如"C:/php-5.4.43-W
是否可以使用OkHttpClient限制活动连接的数量?所以,如果达到限制,就不会选择和建立新的连接? 我的应用程序同时启动多个连接。