1、【为什么我们使用短连接】
我们使用的都是短连接,因为长连接占用资源严重,且造成死锁、阻塞后,后续请求就无法继续了。因为长连接一般都是公用一个连接,如果连接数过多,占用资源就非常多了,但是如果只用一个,当并发量大的时候,如果一个请求处理时间过长,就会导致后面的请求堵塞,所以一般不用长连接。
2、【使用短连接的方式】
短连接的模式:会在配置文件中写入最大连接数(mysq.ini中,我们一般都是通过命令修改数量,如set GLOBAL max_connections = 200。我们线上的连接数为5000),当一个请求打到一个cgi进程,就会新建一个短连接到mysql。
3、【PHP RSHUTDOWN会不会清理长连接】
php结束阶段的时候我们知道php在执行RSHUTDOWN的时候会释放所有处理本次请求的资源,如申请的变量。那么理所当然的是我们打开的数据库连接句柄也会被释放,但是这只限于我们打开连接的时候使用的是短链接,看官方文档我们可知道如果你打开的是长连接,在请求处理完后php会收留在本次打开的连接(即使你主动关闭也不会关闭而被收留),在下次有打开相同连接的请求时php会把收留的句柄直接给出去,就免去了建立连接的过程效率更高。
4、【关于PHP-FPM的子进程数和mysql连接数的关系】
毫无疑问,PHP-FPM的子进程数一定要小于等于mysql连接数,否则会报too many connection。
5、【连接的理解】
对mysql的一个连接,其实是对mysql的一个库的连接,也就是说,一个进程,可以长连接多个库(只要不超过连接上限)。