程咬金有三板斧,我们有三招。在这篇博文中我们要出第三招,同时也意味着昨天在“希望的田野”上的第二招失败了。

前两招打头(CPU)不凑效,这一招要换一个部位,但依然要坚持攻击敌人最弱(最忙最累)部位的原则。那除了CPU,最忙最累的部位是哪里呢?对于Web服务器来说,毫无悬念,当然是网卡。而且阿里云的云服务器,所有的网络负载都集中在一块内网网卡上,SLB(负载均衡)用它,OCS(缓存服务)用它,RDS(数据库服务)也用它。所以,就对它出招!

招式受这篇博文(XenServer – Windows 2003 TCP checksum issue)的启发,博主通过禁用TCP/IP Offload解决了“通过IIS下载文件中途突然卡住”的问题。TCP/IP Offload的初衷就是让网卡帮CPU分担一些TCP/IP协议栈的处理工作,比如检查checksum、发ack包,在物理机环境下,它是提高网络处理性能的功臣。但是在虚拟机环境下,网卡是虚拟出来的,它的作用就有待商榷与验证。于是,禁用它成为第三招的招式。

有了目标部位与招式,还等什么,出招!

开始的时候,我们偷了点懒,只出了两个手指,想点穴取胜——只禁用了网卡的Checksum Offload与Check checksum on RX packets。

结果,“黑色1秒”依旧。

恼火之下,接着干脆南拳北腿一起出,南拳是在注册表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\)中添加DisableTaskOffload=1(禁用TCP/IP Offload),北腿是在同样的注册表位置添加EnableRSS=1(Receive-Side Scaling,充分利用多核CPU的优势提高网络处理性能,详见这里)。

注册表设置好之后,重启计算机。。。

结果敌人被成功被击倒!自13:30左右被击倒后,到现在(21:20)也没爬起来(黑色1秒没出现)。如果明天一天还没能爬起来,我们就可以宣布获胜了。

后来,我们在另外一台服务器上发现只要用拳头(只添加DisableTaskOffload=1)就可以把敌人干倒,到目前也没爬起来,这还要进一步观察。

是否真的能三招致胜,明天就会见分晓!

【更新】

结果,第二天早上黑色1秒再次出现。

【第三招增强版】

后来发现北腿出错了,应该是禁用Receive-Side Scaling。Windows Server 2012中默认就启用了Receive-Side Scaling,可以通过以下命令查看:

netsh int tcp show global

命令运行结果:

所以第三招增强版就是禁用Receive-Side Scaling,操作命令如下:

netsh int tcp set global rss=disabled

命令运行结果:

禁用Receive-Side Scaling之后有个意外的发现,CPU的8个核的负载分配更均匀了。

第三招增强版的效果还需要一段时间的观察。

【参考资料】

Windows Server 2008 network speed slow, Xen 3.4.3 HVM ISO

XenServer – Windows 2003 TCP checksum issue(文中有一个地方写错了,应该是DisableTaskOffload=1)

Citrix XenServer Slow Network Performance

TCP Offload Performance Impact

Performance Tuning Windows 2012: Network Subsystem–Part 1

云计算之路-阿里云上:消灭“黑色n秒”第三招——禁用网卡的TCP/IP Offload的更多相关文章

  1. 云计算之路-阿里云上:“黑色1秒”问题与2009年Xen一个补丁的故事

    在之前对“黑色1秒”问题的分析博文中,我们将最大嫌疑对象锁定在了Xen,在这篇博文我们将从Xen的角度进行分析.也许有人会问,为什么不知道天多高地多厚地去研究不属于自己范围的问题?只因我们对一个问题的 ...

  2. 云计算之路-阿里云上:“黑色1秒”最新线索——w3tp与w3dt

    向大家分享一下最近排查“黑色1秒”问题的进展,“黑色1秒”的问题表现详见什么是黑色1秒. 1. 发生在w3wp进程内 判断依据:“黑色1秒”期间,http.sys的HTTP Service Reque ...

  3. 云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析

    在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. “黑色30秒”问题现象的主要特征是:排队的请求(Requests Queued)突增 ...

  4. 云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题

    今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧. 而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存 ...

  5. 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时

    在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...

  6. 云计算之路-阿里云上:SLB会话保持的一个坑

    冒着被大家厌烦的风险,今天再发一篇“云计算之路-阿里云上”.这是在前一篇发过之后真实发生的事情,我们觉得定位问题的过程值得分享.而且估计园子里不少朋友被这个问题骚扰过,我们有责任让大家知道问题的真正原 ...

  7. 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障

    3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...

  8. 云计算之路-阿里云上-新发现:又一种与虚拟内存有关的CPU波动情况

    在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前 ...

  9. 云计算之路-阿里云上:启用Windows虚拟内存引发的CPU 100%故障

    今天上午11:35~11:40左右,由于负载均衡中的两台云服务器CPU占用突然飚至100%,造成网站5分钟左右不能正常访问,请大家带来了麻烦,请谅解! (上图中红色曲线表示CPU占用) 经过分析,我们 ...

随机推荐

  1. Webdriver实现原理

    通过研究selenium-webdriver的源码,笔者发现其实webdriver的实现原理并不高深莫测无法揣度.在这里以webdriver ruby binding的firefox-webdrive ...

  2. hdu 3951 - Coin Game(找规律)

    这道题是有规律的博弈题目,,, 所以我们只需要找出规律来就ok了 牛人用sg函数暴力找规律,菜鸟手工模拟以求规律...[牢骚] if(m>=2) { if(n<=m) {first第一口就 ...

  3. html+css实现简易下拉菜单

    <!DOCTYPE html> <html> <head> <style> div { width:100px; height:40px; overfl ...

  4. DirectXMath

    DirectXMath 是Windows平台下的数学库,DirectXMath 库基于 XNA Math C++ SIMD library version 2.04 .   DirectXMath 库 ...

  5. 使用 CXF 做 webservice 简单例子

    Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量 ...

  6. ehcache基本使用

    maven <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache< ...

  7. Jexus V5.8.0正式发布:跨平台的ASP.NET WEB服务器

    Jexus Web Server V5.8.0 已于今日(12月10日)正式发布,下载地址:http://www.linuxdot.net/. Jexus v5.8.0有如下的更新: 1,为反向代理增 ...

  8. 作业3.2:psp

    PSP2.1 Personal Software Process Stages Time Planning 计划 20min Estimate 估计这个任务需要多长时间 3.5h Developmen ...

  9. css计数器详解

    什么是css计数器 体验更佳排版请戳原文链接:http://blog.liuxianan.com/css-counters.html 就是采用css给一些html元素自动生成编号,比如类似1.3.2这 ...

  10. 数据库的Timeout

    数据库的Timeout 其实有很多种情况. 一个是执行的超时时间 executionTimeOut,一个是连接的超时时间connectionTimeOut, 还有呢? 等待的超时时间 ReadTime ...