zoukankan      html  css  js  c++  java
  • mysql 最大连接数 & 连接池

    MySQL最大连接数

    关于最大连接数:http://mg123.lofter.com/post/1a5f3e_996f838

    可以通过修改配置文件(默认/etc/my.cnf)中的"mysqld"段的max_connections 参数来支持更多的连接(默认100)。

    猜测mysql利用了linux的select/poll/epoll中的一种技术(即IO多路复用),由于连接数(文件描述符)上限是 63384( 2的14次方), 目测是select/poll。因为epoll没有连接数的上限。(有待进一步确认)

    连接池

    同时鉴于建立连接需要时间,参考IO多路复用的思路,需要复用连接。需要设定一个合理的连接数(平衡建立和维护连接的成本和并发)。

    默认情况下,考虑内存足够大,肯定会用贪心配置。 即最大连接数设定为63384。

    然而开源的连接池技术里面能够做到的上限是多少呢?

    假定行业的最佳实践为:连接使用率为85%.

    mysql>show variables like 'max_connections';
    
    +-----------------+-------+
    
    | Variable_name   | Value |
    
    +-----------------+-------+
    
    | max_connections | 151   |
    
    +-----------------+-------+
    
    1 row in set (0.00 sec)
    
    
    mysql> show status like 'max%connections';
    
    +----------------------+-------+
    
    | Variable_name        | Value |
    
    +----------------------+-------+
    
    | Max_used_connections | 152   |
    
    +----------------------+-------+
    
    1 row in set (0.00 sec)

    连接数使用比率 = max_used_connections / max_connections * 100% (理想值≈ 85%)。

    那么连接池的最大连接数可以设定为 63384 * 0.85 ≈ 13926 。

    开源框架

    java: c3p0( https://github.com/swaldman/c3p0)

    python: 用官方推荐的c的扩展库MySQL Connector/Python(详情参考这里:https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html), 默认支持的最大连接数32. [pooling.CNX_POOL_MAXSIZE (default 32)] (可以修改)

  • 相关阅读:
    02梦断代码阅读笔记之二
    每日日报
    每日日报
    每日日报
    每日日报
    02梦断代码阅读笔记之一
    每日日报
    SQL语句分为哪几种?
    数据库三范式是什么?
    什么是数据库事务?
  • 原文地址:https://www.cnblogs.com/Tommy-Yu/p/5993904.html
Copyright © 2011-2022 走看看