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)] (可以修改)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM