一直以来php连接数据库使用的都是短连接,这种方式每次请求都要重新连接,其实是非常消耗资源的,为什么不使用长连接呢?长连接会带来什么问题?我们实验一下
首先将php-fpm的配置更改一下
|
|
然后在浏览器中访问连接数据库的页面,代码如下
|
|
通过lsof -Pni :3306
监控mysql连接情况
第一访问页面,创建连接56426
第二次访问页面,并没复用连接,而是再次创建了新的连接,使用端口56428
多次刷新页面后,查看连接发现mysql连接数为4
得出结论: 一个php-fpm进程保持一个mysql连接
这里就有坑了,web机器是可以水平扩展的,php-fpm进程总数很容易超过mysql连接数,当mysql连接数打满后,后续的连接就再也连接不上服务器了,而且呢大量的连接也会给mysql增加很多压力。说到这里,应该明白php长连接的问题了,这也是为什么一些网站做大后,要么换掉php,要么让php做前端的原因吧。