1. 可能连接超过mysql设置的上限(你的应该没超)
2. 程序问题,建立了连接不关闭(这个有可能,看看你的session)
3. 在没有使用连接池的情况下,每次都建立一个新的连接到数据库(即使每次 *** 作完毕都及时准确的close了),但是由于可能建立到数据库连接的频率很高(比如在for循环里),那么会迅速建立大量的tcp连接到mysql的指定端口,OS在关闭tcp连接是有一定的延迟的,也是有一定数量限制的,所以就会出现无法连接的情况(connection refused)。
-------------------------------------
我个人感觉设置最大连接数可能用处不大,因为默认的是100,你说刚10个就出问题~所以我觉得可能还是和系统有关系,因为你说刷新的不频繁就不会报错~
不过你到可以先试试看~万一能行更好不是~
还有啊,你可以找别的机器试验下,在别人的电脑上做下测试~
线程池缓存大小( 当客户端断开连接后 将当前线程缓存起来 当在接到新的连接请求时快速响应 无需创建新的线程 )
查看 thread_cache_size
show global variables like 'thread_cache_size'
设置 thread_cache_size
set global thread_cache_size = 20 (立即生效重启后失效)
MySQL 配置文件 my.cnf 中 mysqld 下添加 thread_cache_size
[mysqld]
thread_cache_size = 20
可以通过如下几个MySQL状态值来适当调整线程池的大小
可以通过 show global status like 'Threads_%' 命令查看以上4个状态值
当 Threads_cached 越来越少 但 Threads_connected 始终不降 且 Threads_created 持续升高
这时可适当增加 thread_cache_size 的大小
MySQL 5.7 参考手册 - thread_cache_size
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)