到目前为止,我已经尝试了几天来解决这个问题。首先,我正在运营一个网站,平均每日页面浏览量为 350,000。以前,所有广告管理(跟踪每个广告投放的点击和展示)和内容都在单个服务器上提供,其规格如下:
服务器 1 操作系统:Windows 2008 R2 64位 CPU:Intel® Core™ i5 - 4 核 内存:8 GB 存储:2 个 1 TB 硬盘 带宽:每月 10 TB
为了提高我们的网站速度,我决定将广告管理脚本分离到另一台专用服务器,因为我们每个页面有超过 15 个广告商到 30 个广告商。
服务器 2 操作系统:Windows 2008 R2 64位 CPU:Intel® Core™ i5 - 4 核 内存:4 GB 存储:2 x 300 GB 硬盘 带宽:每月 10 TB
问题
问题是 Server 1
可以同时处理内容和广告系统。现在,我把广告系统拿走,放在Server 2
。Server 2
只能勉强提供广告系统。
测试
- 首先,我将 75% 的广告移至
Server 2
。然后,对服务器执行 ping:ping -t xxxxx
。[我执行了 10 分钟的 ping,其模式与以下类似]
来自 xxxxx 的回复字节=32 时间=290ms TTL=116 来自 xxxxx 的回复字节=32 时间=289ms TTL=116 来自 xxxxx 的回复字节=32 时间=320ms TTL=116 来自 xxxxx 的回复字节=32 时间=286ms TTL=116 来自 xxxxx 的回复字节=32 时间=286ms TTL=116 来自 xxxxx 的回复字节=32 时间=348ms TTL=116 来自 xxxxx 的回复字节=32 时间=284ms TTL=116
- 然后,我将 100% 的广告移至
Server 2
。然后,再次对服务器执行 ping。[我执行了 10 分钟的 ping,其模式与以下类似]
来自 xxxxx 的回复字节=32 时间=290ms TTL=116 请求超时 来自 xxxxx 的回复字节=32 时间=320ms TTL=116 来自 xxxxx 的回复字节=32 时间=286ms TTL=116 请求超时 请求超时 来自 xxxxx 的回复字节=32 时间=284ms TTL=116
尝试
- 增加
MaxUserPort
和TcpNumConnection
- 重启服务器
- 增加 IIS
Max Instances
和Instance MaxRequests
服务器资源
- 仅使用 10%-15% 的网络连接
- 仅使用 10%-15% 的 CPU
- 仅使用了 25% 的内存
答案1
好吧,我们开始吧。这个比较长。
看来你完全误判了事实。Windows - 即使是过时的 2008 R2(你应该尽快更新) - 也完全能够处理我的手机可以轻松处理的音量。
因此,剩下 3 个可能的问题领域:
安装。您的驱动程序可能很糟糕。假设您运行的是过时的操作系统 - 您的驱动程序有多好?更新它们 - 这可能会导致各种问题。
网络。这真的就像“我的车太慢了,请帮我加快速度”,而问题在于您大部分时间都堵在交通拥堵中,并抱怨交通停滞不前。这不是汽车调校问题。10TB 流量根本说明不了网络拥堵。查看 NIC 上的网络流量统计数据,然后做出相应的反应 - 如果它们没有达到应有的速度……您的提供商已经超卖。就这么简单。
代码。可能是您需要更多 RAM(计算机忙于交换到 RAM 而不是处理)或糟糕的代码占用了您的所有 CPU,以至于内核级 TCP 堆栈无法正确响应(是的,ICMP 回复就是这么低)。这会很残酷 - 但这是另一种检查途径。也可能是您通过过于频繁地访问磁盘而不是在 RAM 中缓存而导致磁盘过载,但我不知何故没有看到这会导致丢失 ping。但是,这里的任何问题都不是管理员可以处理的 - 您必须向它扔硬件,或者拿一根棍子打程序员,直到他修复它(如果这是一个“愚蠢”级别的错误,会损害性能 - 如果不是,那么获得重大收益要困难得多,可能只是您需要更强大的硬件)。
它绝对不需要调整 Windows - 一个配置良好的 Windows 可以提供比这多得多的功能。我的文件服务器在较长时间内定期 ß - 从相对现成的设置提供 4-6 千兆位。
现在,你提供的所有数字都毫无意义。
- CPU 使用率为 10-15% 可能意味着需要进行交换。
- 25% 的内存使用率可能是一个很好的指标,现在正在发生交换,但它仍然可能意味着 CPU 正在等待 IO。
- 10%-15% 的网络使用率意味着 - 绝对没有用,因为这只是您这边的网络。上游呢?如果提供商将 20 台 1 千兆位的服务器放在机架的 1 千兆位上行链路上,并且溢出严重,该怎么办?
最后一点很有可能——丢包就是一个好迹象。而且这对你来说是不可见的。
我的建议是……暂时关闭机器上的所有功能,使用大型静态文件从外部进行速度测试。我敢打赌,你会遇到更高的拥堵。
到目前为止,您所做的一切(maxuserport、tcpnumconnection、重新启动服务器、调整 IIS 设置)都完全失败了,而且在最佳情况下没有任何作用。用锤子敲打一辆慢速行驶的汽车永远无法解决任何问题,尤其是当汽车因为堵车而慢速行驶时。我会撤消所有更改并开始分析问题,而不仅仅是您的服务器。我敢打赌目前是网络拥堵。
答案2
ping 是否在两台服务器外部?如果是,请尝试从服务器一 ping 到服务器二。如果结果与外部 ping 时的结果完全不同,则表明问题可能不是由服务器二引起的。此外,查看资源监视器中的驱动器的磁盘队列长度和活动时间 - 这些信息可能会突出显示问题。