前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql的最大连接数问题:pymysql.err.OperationalError: (1040, 'Too many connections')

mysql的最大连接数问题:pymysql.err.OperationalError: (1040, 'Too many connections')

作者头像
Python疯子
发布2018-12-12 15:29:22
5.9K0
发布2018-12-12 15:29:22
举报
文章被收录于专栏:Python疯子

pymysql.err.OperationalError: (1040, 'Too many connections') 超出连接数据库最大连接数所致,修改最大连接数

一、连接远程数据库:
代码语言:javascript
复制
YoungdeMacBook-Pro:ids Young$ mysql -h 172.117.43.14 -u root -p
Enter password: 
二、查看 mysql 状态
代码语言:javascript
复制
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name  | Value  |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)
2.2 查看服务器响应的最大连接数
代码语言:javascript
复制
mysql> show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name    | Value     |
+----------------------+-------+
| Max_used_connections | 5   |
+----------------------+-------+
1 row in set (0.00 sec)

同时查看2条数据:

代码语言:javascript
复制
   '''
  mysql>  show variables like '%max_connections%';
  +------------------------+-------+
  | Variable_name          | Value |
  +------------------------+-------+
  | max_connections        | 151   |
  | mysqlx_max_connections | 100   |
  +------------------------+-------+
  2 rows in set (0.00 sec)
  '''

修改最大连接数:

代码语言:javascript
复制
  set global max_connections=1000 

查看数据库当前运行状态:

代码语言:javascript
复制
  mysql> show status like 'Threads%';
  +-------------------+-------+
  | Variable_name     | Value |
  +-------------------+-------+
  | Threads_cached    | 58    |
  | Threads_connected | 57    |   ###这个数值指的是打开的连接数
  | Threads_created   | 3676  |
  | Threads_running   | 4     |   ###这个数值指的是激活的连接数,这个数值一般远低于connected数值
  +-------------------+-------+

Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数

对于 mysql 服务器最大连接数值的设置范围比较理想的是: 服务器响应的最大连接数值占服务器上限连接数值的比例值在 10% 以上,如果在 10% 以下,说明 mysql 服务器最大连接上限值设置过高。

代码语言:javascript
复制
Max_used_connections / max_connections * 100%
三、问题分析

3.1 max_connections

MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为 max_connections+1;

这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准; 增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等; 该参数设置过小的最明显特征是出现”Too many connections”错误;

3.2 mysql 最大连接数 151 问题

如果我设置连接小于151时,比如 150,那么实际连接数就是 150,也就是说,我的配置文件是没有问题的。

查 MySQL 官方文档,里面说了

代码语言:javascript
复制
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。换言之,连接数与文件打开数有关

4 问题解决

更改 MySQL 在 Linux 的最大文件描述符限制,编辑/usr/lib/systemd/system/mariadb.service文件,在文件[Service]下添加:

代码语言:javascript
复制
LimitNOFILE=65535
LimitNPROC=65535

保存后,执行下面命令,使配置生效

代码语言:javascript
复制
# systemctl daemon-reload
# systemctl restart  mariadb.service

问题解决

代码语言:javascript
复制
MariaDB [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 4096  |
+-----------------+-------+
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、连接远程数据库:
  • 二、查看 mysql 状态
  • 2.2 查看服务器响应的最大连接数
    • 三、问题分析
    • 4 问题解决
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档