排查:Mysql连接池
- 连接数据库的Java应用的Druid数据库连接池,配置的最大连接数是400
- 配置文件my.cnf,参数max_connections,配置的是800
- 但实际上Mysql只建立使用了214个连接,指令:show variables like ‘max_connections’
- 通过查看mysql启动日志,发现mysql将最大连接数限制为来214
原因:linux将进程可以打开的文件句柄数限制为1024,导致mysql最大连接数受限
解决
修改最大文件句柄数:ulimit -HSn 65535
- 检查是否生效:
- cat /etc/security/limits.conf
- cat /etc/rc.local
- 调整my.cnf的max_connections参数,然后重启mysql服务
-
ulimit
linux默认会限制每个进程对系统资源的使用,包括可以打开的文件句柄、可以打开的子进程数、网络缓存、最大可以锁定的内存大小等
- 避免某个进程耗尽操作系统所有的资源
- 所以生产环境部署中间件系统时候,都需要调整一下Linux内核参数,比如ulimit
- ulinit -a可以看到每个进程被限制资源的情况

