代码之家  ›  专栏  ›  技术社区  ›  Brent Baisley

等待连接的时间太长

  •  1
  • Brent Baisley  · 技术社区  · 17 年前

    我们有一个相当繁忙的网站(每天100万次页面浏览量),使用apache mod proxy,在time_wait状态下连接不断超载(>1000)。连接到端口3306(mysql),但是mysql只显示了一些连接(显示进程列表),并且运行良好。 我们试着改变了很多事情(保持活力开/关),但似乎没有任何帮助。所有其他系统资源都在合理范围内。

    我到处找了一下,这似乎表明改变了TCP时间等待间隔。但这似乎有点激烈。我以前在繁忙的网站上工作过,但从来没有遇到过这个问题。

    有什么建议吗?

    3 回复  |  直到 17 年前
        1
  •  5
  •   Craig Lewis    17 年前

    每次等待连接都是已关闭的连接。

    您可能正在连接到mysql,发出一个查询,然后断开连接。对页面上的每个查询重复此操作。考虑使用连接池工具,或者至少使用一个保存数据库连接的全局变量。如果使用全局设置,则必须在页面末尾关闭连接。希望你有一个共同的地方,你可以把它,像页脚包括。

    作为奖励,您应该获得更快的页面加载。mysql连接速度很快,但不必重新连接速度更快。

        2
  •  1
  •   Gilles Rayrat    15 年前

    如果您的客户端应用程序正在使用JDBC,则可能会遇到以下错误: http://bugs.mysql.com/bug.php?id=56979 我相信php也有同样的问题 干杯, 吉尔斯。

        3
  •  0
  •   xkcd150    17 年前

    我们有一个类似的问题,我们的web服务器都冻结了,因为我们的php正在连接一个mysql服务器,该服务器被设置为对传入的连接进行反向主机查找。

    当事情进展缓慢时,它工作得很好,但是在负载下,响应时间突然超过了屋顶,所有的apache服务器都陷入了时间等待的困境。

    我们解决问题的方法是通过使用xdebug在高负载下在脚本上创建分析数据,并查看这些数据。mysql_connect调用占用了80-90%的执行时间。

    推荐文章