我有一个在我们的客户端的内部networking上运行的Web应用程序。 这个问题稍微重叠了我关于调整远程MySQL安装的其他活动问题。 问题是速度,应用程序是痛苦的缓慢。 应用程序运行在另一个环境中,所以我排除了编码。
你下一步怎么做? MySQL可能仍然是问题吗? 也许它正在快速检索,但没有足够快的返回数据? 我还能在哪里看?
非常感谢您的帮助。
你可以validation你的DNSconfiguration正确,响应速度快吗?
在对用户进行身份validation时,MySQL需要执行反向DNS查找,将客户端IP地址parsing为主机名,并在其mysql.user数据库中进行匹配。
要检查这一点,你可以从你的mysql服务器(或者nslookup <client_ip_address>如果你在Windows上运行它)尝试类似dig -x <client_ip_address>东西。
如果这个请求的反应不够快,有很多解决scheme(我现在写不起来)。
一些想法:
一个让人想到的猜测是,查询可能被caching到一个结果中,而不是像发现那样发送数据?
你的应用程序开发了什么语言? 我意识到你已经说过这不是编码相关的,但你可以把一些断点或debugging点,找出它在哪里停滞?
我用一种不支持远程debugging的语言做了类似的事情。 在我把每个主要function写入日志文件之前和之后,当它完成时,检查日志,find时间戳的差距,钻研该function,做了类似的事情,并最终find该延迟是在调用authentication服务时造成的。
如果遇到所有时间戳具有可接受的限制的情况,那么延迟很可能发生在Web服务器守护进程/服务上。 它可能是一个错误configuration的Apache,或在IIS中的一个坏的filter,任何数量的东西…
不应忽视的是物理networking基础设施。 之前我看到过类似的问题,最终被追溯到一个糟糕的networking电缆。 查询运行速度不够快,但通过该电缆的networking吞吐量令人难以置信的缓慢。 更换电缆,一切都很好。