为什么我不使用mysql_pconnect()时得到MySQL休眠连接

时间:2014-04-30 11:41:49

标签: php mysql apache mysql-connect

Apache Bench测试显示数据库的高吞吐量导致以下情况......

  • Apache线程陷入“发送回复”状态,都与特定的PHP文件相关(如Apache扩展状态所示)。
  • MySQL与PHP文件使用的用户睡眠连接。

注意:Apache Bench从远程位置用作仅强调数据库的机制,即刚刚连接到数据库的脚本,每个负载运行5个查询。

运行相同的Apache Bench测试,但在脚本末尾引入mysql_close()解决了这个问题。我想了解的是为什么会发生这种情况。

我们内部的流行理论是:

  1. 数据库上增加的吞吐量以某种方式阻止Apache正确地提供其请求。某个地方的缓冲区,无论是在MySQL还是在操作系统级别都被填满了。
  2. Apache请求因此陷入了Sending Reply状态,并且因为PHP文件末尾没有mysql_close()数据库连接保持打开状态 - 可能只有在达到MySQL的连接超时限制时才会过期MySQL连接已关闭。 要明确,我们未使用mysql_pconnect() ,但我们正在使用mysql_connect()
  3. 如上所述,虽然我们已经“解决”了这个问题,但我们希望通过坚实的答案而不是有根据的猜测来深入了解这个问题。

    以前有人经历过这个并知道解决方案吗?识别这一点的任何技巧/想法/方法。

0 个答案:

没有答案