合理配置MySQL连接池参数可提升系统吞吐量并保障数据库稳定;需根据并发量设置最大连接数(建议CPU核数2~4倍)、最小空闲连接(最大连接的10%~20%)、连接超时(3~5秒)、空闲存活时间(300~600秒)及连接生命周期(1800~3600秒),并确保总连接数不超过MySQL的max_connections限制,结合监控指标动态调整以避免资源耗尽或请求阻塞。

最大连接数(maxPoolSize / maxConnections): 指连接池允许创建的最大连接数量。设置过高会增加数据库负载,过低则可能造成请求排队。建议根据业务并发量评估,一般设为数据库CPU核数的2~4倍。例如,8核机器可考虑设置为20~50。
最小空闲连接(minIdle): 连接池保持的最小空闲连接数。用于应对突发流量,避免频繁创建连接。通常设为最大连接数的10%~20%,如最大50,则最小空闲可设为5~10。
连接超时时间(connectionTimeout): 应用获取连接的最长等待时间。超过该时间未获取到连接将抛出异常。建议设置为3~5秒,防止请求长时间阻塞。
空闲连接存活时间(idleTimeout): 空闲连接在池中保留的最长时间。避免长期空闲连接占用资源或被中间件/防火墙断开。推荐设置为300~600秒。
连接生命周期(maxLifetime): 连接从创建到被强制关闭的时间。防止连接老化或出现状态异常。应略小于数据库的wait_timeout值(默认8小时),建议设为1800~3600秒。
MySQL本身有最大连接数限制(由max_connections参数控制,默认151)。所有应用连接池总和不能超过此值。可通过以下命令查看:
SHOW VARIABLES LIKE 'max_connections';若应用较多,需按比例分配连接池大小,并预留部分连接给运维操作。
同时关注Aborted_connects等状态变量,判断是否存在连接认证失败或超时问题:
SHOW GLOBAL STATUS LIKE 'Aborted_connects';调优不是一次性工作,需持续观察运行指标:
主流连接池如HikariCP、Druid提供JMX或内置监控页面,可实时查看连接状态。Druid还支持SQL监控和慢查询分析,便于定位问题。
HikariCP(Spring Boot默认):
dataSource.setMaximumPoolSize(30);Druid:
druid.maxActive=30
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号