• Mysql Too many connections


    错误原因

    java.sql.SQLException: Cannot create PoolableConnectionFactory (Data source rejected establishment of connection,  message from server: "Too many connections")

    修改mysql的my.ini配置文件,网上的说法:mysql安装目录下的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满。

    而项目实际上部署在linux系统上,需要找到my.cnf的配置文件,一般在etc/my.cnf,找到这个文件,[mysqld]下添加如下行:

    max_connections=1000
    max_user_connections=500
    wait_timeout = 28800
    interactive-timeout = 28800

    之后重启mysql,生效。

    1、使用 service 启动:
    service mysqld restart 
    service mysql restart (5.5.7版本命令)

    2、使用 mysqld 脚本启动:
    /etc/init.d/mysqld restart

        max_connections: 为设置最大的连接数

        max_user_connections:设置每用户最大的 连接数500

        wait_timeout:表示200秒后将关闭空闲连接,但对正在工作的连接不受影响。

    查看连接数是否被修改

    show variables like '%connection%'

    max_connections代表允许连接数据库的所有用户的连接数总和,是对整个服务器的用户限制,整个服务器只能开这么多session,而不考虑用户!

    max_user_connections限制每个用户的session连接个数,每个用户都可以连接,但是连接只能这么大值(用户数指root)

    查看服务器线程数

    show global status like 'Thread%';

     

    thread_cached :代表mysql管理的线程池中还有多少可以被复用的资源

    Threads_connected : 当前打开的连接的数量。(和show processlist一致)

    thread_created : 代表新创建的thread(根据官方文档,如果thread_created增大迅速,需要适当调高thread_cache_size)

    thread_running :代表真正在运行的(等于1一般就是这个show status命令本身)

    mysql建立连接非常消耗资源,所以就有了thread_cache,当已有连接不再使用之后,mysql server不是直接断开连接,而是将已有连接转入到thread_cache中,以便下次在有create thread的需求时,可以在cache中复用,提高性能,降低资源消耗。  

    当然,如果已经有了中间件或者其他的连接池管理,那么这个参数就没有那么重要了,但是如果没有其他的连接池管理,那么优化这个参数还是可以得到不错的回报的。

    所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。

    show full processlist;

      

  • 相关阅读:
    RESTFUL 设计风格
    GET与POST的区别
    pycharm 对数据库进行可视化操作
    ORM 的基本操作
    pycharm 直接删掉数据表之后,makemigration和migrate 之后,数据库中依然没有生成数据表的问题
    DOM
    BOM对象
    JavaScript
    traversal child window of parent window
    tkinter threading unblock GUI ( check if the thread exists)
  • 原文地址:https://www.cnblogs.com/aeolian/p/12501370.html
Copyright © 2020-2023  润新知