我构建了一个应用程序(MySQL / PHP),它可以(及时)使用与远程(也许是慢速)MySQL服务器的连接。该应用程序使用AJAX耳语,经常打开数据库连接。我已经做了一些客户端优化,但从来没有足够的勇气使用持久连接,这可能是个好主意。
我担心空闲的mysql连接可能会超出服务器限制,导致需要重新启动服务器。所以我计划使用mysql.connection_timeout
到15s,这将在限制后杀死每个空闲的持久连接?或者它会阻止系统资源,直到服务器进程结束?
我不会在窃窃私语中使用交易,并且在连接关闭后应该释放每个锁,对吗?
我应该注意其他任何持续连接问题吗? (我已经阅读了the documentation。)
答案 0 :(得分:2)
通常不使用与MySQL的持久连接获得任何东西。它的连接协议通常相当快。当您使用常规的非持久连接时,您所失去的是保证“干净”的操作环境。
如果您的任何脚本在事务中间因任何原因而死亡或者设置了服务器端变量,则持久连接意味着当某些OTHER脚本再次获取连接时,半完成事务仍处于活动状态。
当发生这种情况时,你很容易陷入僵局。新脚本不知道它有一个旧/脏连接,并且MySQL无法看到原始连接脚本已经消失并自行清理,因此最终会出现垃圾散布环境。
话虽如此,您可以使用mysql.max_persistent
设置限制PHP代表您保持打开的连接数。无论您尝试从脚本中建立多少连接,PHP都不会超过该限制,因此您可以将其设置为低于MySQL自己的max_connections
设置。