Web应用程序速度问题

我有一个在我们的客户端的内部networking上运行的Web应用程序。 这个问题稍微重叠了我关于调整远程MySQL安装的其他活动问题。 问题是速度,应用程序是痛苦的缓慢。 应用程序运行在另一个环境中,所以我排除了编码。

  • 刷新一个特定的页面将需要几分钟(字面上)加载。
  • MySQL服务器在一个单独的盒子上,但它距离networking服务器只有一个单一的4ms。
  • 它不是一个缓慢的查询,在等待页面加载时检查进程列表根本不显示任何挂起的查询。

你下一步怎么做? MySQL可能仍然是问题吗? 也许它正在快速检索,但没有足够快的返回数据? 我还能在哪里看?

非常感谢您的帮助。

你可以validation你的DNSconfiguration正确,响应速度快吗?

在对用户进行身份validation时,MySQL需要执行反向DNS查找,将客户端IP地址parsing为主机名,并在其mysql.user数据库中进行匹配。

要检查这一点,你可以从你的mysql服务器(或者nslookup <client_ip_address>如果你在Windows上运行它)尝试类似dig -x <client_ip_address>东西。

如果这个请求的反应不够快,有很多解决scheme(我现在写不起来)。

一些想法:

  • 你可以检查MySQL的慢查询日志
  • 你有没有试图在同一个Web服务器上运行数据库的应用程序?
  • 您可以使用iftop检查两台服务器之间的stream量,看看networking是否是瓶颈。

一个让人想到的猜测是,查询可能被caching到一个结果中,而不是像发现那样发送数据?

你的应用程序开发了什么语言? 我意识到你已经说过这不是编码相关的,但你可以把一些断点或debugging点,找出它在哪里停滞?

我用一种不支持远程debugging的语言做了类似的事情。 在我把每个主要function写入日志文件之前和之后,当它完成时,检查日志,find时间戳的差距,钻研该function,做了类似的事情,并最终find该延迟是在调用authentication服务时造成的。

如果遇到所有时间戳具有可接受的限制的情况,那么延迟很可能发生在Web服务器守护进程/服务上。 它可能是一个错误configuration的Apache,或在IIS中的一个坏的filter,任何数量的东西…

不应忽视的是物理networking基础设施。 之前我看到过类似的问题,最终被追溯到一个糟糕的networking电缆。 查询运行速度不够快,但通过该电缆的networking吞吐量令人难以置信的缓慢。 更换电缆,一切都很好。