mysql最大连接数也是性能优化的一方面,很多开发人员并不关注一这点,因为mysql默认的连接数足够满足

一些小型的应用了,但当网站流量越来越大,并发越来越高,那么你不得不关注这个连接数了。

max_connections:Mysql最大连接数。

参数默认值:100

最大上限值:16384(超过按照16384为准)

mysql连接是有上限的,因为每建立一个连接都会消耗内存,因为我们希望客户端在连接mysql数据库并处理完

响应请求操作后,应该及时断开连接并释放内存。如果你的MySQL Server有大量的闲置连接,他们不仅会白白

消耗内存,而且如果连接一直在累加而不断开,当mysql连接数大于该设置值时,就会报“Too many connections”

的错误,那设多少合适?

设置最合适的连接数的公式为:Max_used_connections / max_connections * 100% ≈ 85%

Max_used_connections参数为过去最大的连接数,所以越接近85%越合适,剩下的15%是为预留的连接,防止

突然并发连接增大,当时连接不足。

interactive_timeout : 服务器关闭交互式连接前等待活动的秒数.

参数默认值:28800秒(8小时)

wait_timeout : 服务器关闭非交互连接之前等待活动的秒数。

参数默认值:28800秒(8小时)

该参数其实说白了就是客户端发起请求的连接方式为长连接时,当处理为请求,需等待这两参数的时间后,才会释放,

在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态:

mysql连接数一直增长 mysql连接数设置优化_连接池

我们发现,但客户端以长连接的方式建立连接时,出来完后,还要sleep一段时间,虽然同个客户端连接

可以复用,不需要重新建立连接,当当高并发的情况下呢?连接一下子就占满了,还不会释放,就会经常

出现“Too many connections”,所以按照PHP手册上的介绍,只适合在并发访问不大的网站上使用数据库

永久连接,但对于一个并发访问不大的网站来说,使用数据库永久连接带来的效率提高似乎没有太大的意义,

从这个角度上来看,我觉得PHP中的数据库永久连接基本上是一个鸡肋的角色,如果你一定要使用数据库

连接池的概念,可以尝试一下sqlrelay或者Apache本身提供的mod_dbd,说不定会有惊喜。