我们的负载平衡 Web 服务器存在一个重大问题。如果我们为最大的网站启用 IIS 日志记录,服务器就会变得非常卡顿,以至于大多数请求都会超时。一旦我关闭日志记录,服务器就会再次正常运行。有哪些可行的解决方案能够记录我们的 Web 流量,而不会出现这种瓶颈?
我们有 2 个运行 Windows Server 2003 和 IIS 6 的负载平衡 VMWare 虚拟服务器,它们只处理我们的网站/网络流量,不处理其他任何内容(数据库和邮件位于不同的服务器上)。
编辑:我忘记的一件事是文件被保存到连接到 NAS 的单独文件服务器中。
答案1
服务器是否将日志记录到与网站提供服务的同一磁盘?您可以检查启用日志记录后的平均磁盘 I/O 时间。将写入转移到另一个驱动器可能有助于加快速度。
答案2
如果您只关心实际访问的页面(HTML、ASPX 等),那么也许可以将其他静态资源(图像、css、js)移至单独的文件夹(如果它们尚未隔离),然后禁用这些文件夹的日志记录。由于每个网页通常都会加载多个其他静态资源,因此您可能能够大大减少日志记录活动,同时仍记录对您关心的页面的访问。
答案3
您可以考虑限制 IIS 中记录的内容。例如,假设您不需要记录对每个图像文件、脚本文件或其他文件的访问。IIS 6 中有一个选项可以限制记录的内容:
在 IIS 7 中执行相同操作略有不同:
我在我的 Web 服务器上实现了这个功能,删除了图像、脚本和一些杂项处理程序,发现日志大小比以前小了约 75%。显然,这样做时您无法在日志文件中看到排除项目的条目,但我主要关心的是页面访问。
答案4
您应该仔细检查您的存储,可能是它的写入性能不够。您还可以检查正在使用的 RAID 级别。如果是 RAID 5,您应该考虑使用更快的阵列,如 RAID 10、01、10E。您还可以考虑为日志创建一个单独的 RAID 卷,这样它就不会干扰 IIS 操作。
此外,您可能混淆了 NAS 和 SAN。从性能角度来看,它们是不同的技术。如果您确实在使用 NAS,则应该三思而后行,因为该技术并不总是适合高 I/O 负载。