我们在 IIS7 上有一个 ASP.Net 3.5 应用程序。
在我们的预览服务器上,它几乎可以立即获取和响应(从获取到页面显示约需 1 秒)。
我们有一个包含 5 个 Web 前端和 3 个 SQL 数据库集群的生产环境。
字体端通过循环方式使用 f5 的 BigIP 进行负载平衡。
前端和 SQL 服务器之间有防火墙。
在生产中,我们在服务器开始响应之前经历了 45 秒的 Get 过程。根据以上信息,罪魁祸首可能是什么?
提前感谢您。
答案1
您提到的任何组件都可能是导致问题的原因。
解决问题的最佳方法是嗅探客户端、IIS 服务器和 SQL 服务器上的入站和出站接口。一旦您记录了 45 秒窗口期间您的请求及其后续响应的位置,您应该可以轻松确定问题的根源。
答案2
我同意@Rich的观点,问题可能出在任何地方。具体来说,使用 dotNet 应用程序的日志库并检查它,检查 IIS 日志,并可能在数据库服务器上使用 SQL Server Profiler。
唯一的复杂性是集群,因此您只能看到 1/5 的网络流量和 1/3 的数据库流量。如果每个请求都慢了 45 秒,那么我猜跟踪任何请求都会告诉您问题所在。否则,请打开粘性会话,以便您在整个测试会话期间始终访问同一台服务器。
当然,我们假设您已经检查了基本情况 - 您的服务器并不缺乏资源,对吗?(即:CPU 没有达到最大值,仍然有可用的 RAM,页面文件没有达到最大值。)
答案3
此外,如果您重新检查基本设置,请确保您已验证所有联网设备的速度和双工设置是否正确。令人惊讶的是,一台服务器的接口设置为半双工,往往会毁掉一个原本可以正常运行的应用程序。
答案4
您是否在 f5 设置上进行了监控?如果启用默认监控,它会每 5 秒检查一次,并在 12 秒后将服务器标记为离线 - 因此您会知道问题是否出在 F5 和 Web 服务器之间。如果您没有基本监控,您可能需要考虑进行设置,以便 F5 可以对节点做出明智的决策