zoukankan      html  css  js  c++  java
  • ERROR nova.servicegroup.drivers.db DBConnectionError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query') (Background on this error at: http://sqlalche.me/e/e3q8)

    转载

    原文地址:http://www.myexception.cn/database/2199157.html

    openstack中数据库连接数太多--pymysql.err.OperationalError,1040, u'Too many connections'

    1.出现问题:

    openstack运行过程中出现如下问题:

    OperationalError: (pymysql.err.OperationalError) (1040, u'Too many connections')

    DBConnectionError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'controller' ([Errno 111] ECONNREFUSED)") [SQL: u'SELECT 1']

    2.查看 mysql 状态

     2.1查看 mysql 的最大连接数

    mysql> show variables like 'max_connections';
    +-----------------+-------+
    | Variable_name  | Value  |
    +-----------------+-------+
    | max_connections | 214   |
    +-----------------+-------+
    1 row in set (0.00 sec)
    

    2.2 查看服务器响应的最大连接数

    mysql> show global status like 'Max_used_connections';
    +----------------------+-------+
    | Variable_name    | Value     |
    +----------------------+-------+
    | Max_used_connections | 215   |
    +----------------------+-------+
    1 row in set (0.00 sec)
    

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

    Max_used_connections / max_connections * 100%

    这的服务器响应的最大连接数已经达到了 mysql 的最大连接数的最大值

    3.问题分析

    3.1 max_connections

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

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

    3.2 mysql 最大连接数 214 问题

    如果我设置连接小于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。换言之,连接数与文件打开数有关。

    4 问题解决

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

    LimitNOFILE=65535
    LimitNPROC=65535

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

    # systemctl daemon-reload
    # systemctl restart  mariadb.service

    问题解决

    MariaDB [(none)]> show variables like 'max_connections';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | max_connections | 4096  |
    +-----------------+-------+
  • 相关阅读:
    通过点击切换文本框内容的脚本示例
    使用脚本改变树控件的行为
    javascript动态创建radio button元素支持IE/Firefox
    轻量级的向导控件MultiView
    客户端脚本简单实现Repeater的无刷新分页
    在非web site项目中引用Membership
    逐步认识C#四种判断相等的方法
    C#获取csv文件内容对逗号和引号分隔的处理
    JavaScript之 值类型 和 引用类型 Better
    JS call apply bind 方法的区别 Better
  • 原文地址:https://www.cnblogs.com/omgasw/p/13372270.html
Copyright © 2011-2022 走看看