如何改进Windows Server 2008 R2以处理许多连接?


9

到目前为止已经有几天了,我试图弄清楚如何解决这个问题。首先,我正在运行一个平均每日页面浏览量为350,000的网站。以前,所有广告管理(跟踪每个广告已投放的点击和印象)和内容均在单个服务器上投放,其规格如下:

服务器1
作业系统:Windows 2008 R2 64-Bit
CPU:Intel®Core™i5-4核
内存:8 GB
存储:2 x 1 TB硬盘
带宽:每月10 TB

为了提高我们的网站速度,我决定将广告管理脚本分离到另一台专用服务器上,因为我们每个页面有15个以上的广告客户到30个广告客户。

服务器2
作业系统:Windows 2008 R2 64-Bit
CPU:Intel®Core™i5-4核
内存:4 GB
存储:2 x 300 GB硬盘
带宽:每月10 TB

问题
问题是 Server 1可以同时处理内容和广告系统。现在,我拿走广告系统并将其放置在Server 2Server 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

尝试次数

  1. 增加MaxUserPortTcpNumConnection
  2. 重新启动服务器
  3. 增加IIS Max InstancesInstance MaxRequests

服务器资源

  • 仅使用10%-15%的网络连接
  • 仅使用10%-15%的CPU
  • 仅使用了25%的内存

3
在我看来,这是一个格式正确的问题,值得赞成,但我仍然觉得我们缺少一些线索来帮助我们解决难题。
瑞安·里斯

@RyanRies,请给指针提供解决此谜题所需的缺少信息。现在,我已经在服务器2的广告的75%,而在服务器1.现在执行相当不错的广告的25%,但我不能完全转移到服务器2
猴子d路飞

1
我同意@RyanRies:我们缺少了一些东西。我将研究广告投放系统的构建方式:可能是内容和广告投放服务之间存在依赖性,从而导致过多的延迟。
Stephane 2013年

@Stephane不,那应该也不会造成ping丢失。Ping不是由广告投放代码处理,而是直接由TCP堆栈处理。基本上,这意味着它们应该可以正常工作,除非服务器严重过载。认真地看起来-根据我的回答-就像带宽不存在一样。在服务器之前。
TomTom 2013年

这里缺少一些东西:1)您可以更改/不更改您的环境吗?2)如何通过磁盘配置Web服务器?3)是您所在位置内部的网络时间,还是这是一台远程服务器?如果是远程服务器,它有多远?4)如果您需要改进服务器,则有预算自由地为整个系统添加硬件吗?5)事件日志是否抛出任何错误?6)在交通高峰时,我看不到perfmon捕获的结果。7)您唯一的访客人数是多少?8)您是否过滤掉了垃圾流量?
Techie Joe

Answers:


4

好吧,让我们开始吧。这更长。

您完全看错了这里看起来的事实。Windows-甚至您应该尽快更新的过时的2008 R2-完全能够处理我的手机无法处理的音量。

因此,剩下3个可能的问题领域:

  • 安装。您的驱动程序可能很cr脚。如果您运行的是过时的操作系统,那么您的驱动程序有多好?更新它们-这可能会导致各种问题。

  • 网络。当问题出在您大部分时间都在交通拥堵中,并且抱怨交通不畅时,这看起来像是“我的车太慢了,请帮助我使其更快”。不是汽车调整问题。10 TB流量对网络拥堵无能为力。在NIC上查看您的网络流量统计信息,然后做出相应的反应-如果它们没有以应有的速度达到最高速度,则说明提供商已超卖。这样简单。

  • 码。可能是您需要更多的RAM(计算机正忙于换出RAM而不是进行处理),或者糟糕的编码正在使用您的所有CPU,从而导致内核级TCP堆栈无法正确响应(是的,ICMP答复是如此之低)。这将是残酷的-但这是另一种检查途径。也可能是您通过过于频繁地访问而不是在RAM中进行缓存而不是在RAM中进行缓存来使光盘超载,但是我不知何故导致ping丢失。不过,这里的任何问题都不是管理员可以解决的问题-您必须将硬件扔给它,或者用一根棍子击打程序员,直到他修复它为止(如果这是“愚蠢”的级别错误,并且会降低性能-如果不是这样,那么要取得重大进展就困难得多,可能只是您需要更强大的硬件而已)。

它绝对不需要调整窗口-配置良好的窗口可以提供更多功能。我的文件服务器会在更长的时间内定期ß-通过相对较高的存储设置提供4-6Gb的存储空间。

现在,您输入的所有数字都不会说什么。

  • 使用10-15%的CPU可能意味着交换。
  • 已使用25%的内存可能是一个很好的指标,现在可以进行交换,但这仍然意味着CPU正在等待IO。
  • 使用10%-15%的网络意味着-绝对没有,因为它只是您网络的一面。上游呢?如果提供商将20个具有1 Gb的服务器放在机架的1 Gb上行链路上,并且像地狱一样溢出呢?

最后一点很可能-丢包是一个很好的指示。这对您将不可见。

我的建议是....请暂时关闭计算机上的所有设备,并使用大型静态文件从外部进行速度测试。我敢打赌你会遇到更高的交通拥堵。

到目前为止,您所做的一切-maxuserport,tcpnumconnection,重新启动服务器,使用IIS设置-都已关闭,并且在最佳情况下什么也不做。用锤子砸慢车永远无法解决任何问题-尤其是在慢速行驶中,因为它会塞车。我将撤消所有更改并开始分析问题,而不仅仅是您的服务器。我现在打赌网络拥塞。


3
even the outdated 2008 R2 which you should update ASAP-来吧,汤姆汤姆,抓紧时间。2008 R2仍处于主流支持范围内,距离扩展支持还有很长的路要走,这是在2020年,我相信...
2013年

4
“您应该尽快更新过时的2008 R2”:这既不正确(2008R2并非“过时”,也不应“仅因为”而更新),并且在答案的上下文中没有任何意义。其余的内容并不能改善您的答案,因为它没有提供识别问题的有用步骤,更没有解决问题的方法,它只是提供了有关性能的一般性建议(且仅在主题上适中)。
Stephane 2013年

实际上,这是因为猜测以后IP堆栈发生了什么重大变化。可伸缩性是重点。因此,是的,在给定的上下文中是这样。应该尽快进行更新-因为您猜怎么着,大多数公司都不会随着时间的推移使您的产品变得更好。2012 R2优于2008 R2。
2013年

使用speedtest.net,上行链路和下行链路约为100mbps。
Monkey D Luffy 2013年

广告系统有两种依赖软件:memcached和MySQL。它会跟踪所有印象并单击memcached,并每10分钟更新一次MySQL。
Monkey D Luffy 2013年

0

ping是否在两台服务器外部?如果是这样,请尝试从服务器一到服务器ping通。如果结果与从外部ping完全不同,则表明问题可能不是由于服务器2引起的。另外,在资源监视器中查看驱动器的磁盘队列长度和活动时间-其更多信息可能会凸显问题。


我已经尝试过了。我使用服务器1来对服务器2进行ping操作,但是如果我投放更多广告,则ping仍然会丢失。
Monkey D Luffy 2013年

1
服务器1和服务器2之间的连接是通过您自己的硬件吗?还是数据中心交换机?只是尝试确定当您ping时是否正在使用可能导致拥塞的DC硬件。您在IIS / Windows中有什么可以动态阻止请求吗?没有Dos保护会阻止合法请求?系统是ASP.NET,数据库是MySQL吗?
Ross Buggins
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.