zoukankan      html  css  js  c++  java
  • 云计算之路阿里云上:“黑色10秒钟”的新进展

    什么是“黑色10秒钟”?

    “黑色10秒钟”是一种故障特征,每次发生时都持续10秒钟。在这10秒钟期间,IIS只接收请求,不响应请求,等10秒钟一过,这些未响应的请求会一起响应。如果你在“黑色10秒钟”的第1秒访问网站,要等10秒钟之后才能看到页面。

    详见云计算之路-阿里云上:超级奇怪的“黑色10秒钟”

    “黑色10秒钟”发生的场景

    问题发生于安装了Windows Server 2008 R2的阿里云云服务器上(宿主机是Linux/Xen),在Linux云服务器上不会出现(因为阿里云在Linux虚机的内核中禁用了CONFIG_PARAVIRT_SPINLOCKS)。

    引发“黑色10秒钟”的原因

    由于Linux内核Xen部分对SpinLock处理的bug(Linux 3.2.0-39.62已修复该bug,详见Linux内核bug引起的“黑色10秒钟”),只要在虚拟机中用到了SpinLock(http://en.wikipedia.org/wiki/Spinlock),并最终使用了xen的pv spinlock(pv=paravirtualization, http://en.wikipedia.org/wiki/Paravirtualization),进行了hypercall调用,就有引发“黑色10秒钟”的可能。

    而在IIS 7.5的WAS(Windows Process Activation Service)中的确用到了SpinLock,可以从WAS进程的堆栈信息中知晓(见下图)。

    “黑色10秒钟”的解决思路

    1. 从虚拟机层面

    对于Linux虚拟机,可以通过修改Linux内核(禁用CONFIG_PARAVIRT_SPINLOCKS)或者升级至Linux 3.2.0-39.62解决问题。

    对于Windows虚拟机(Windows Server 2008 R2),除了微软,没有人可以让WAS不使用SpinLock,唯一可以寄希望的就是微软在Windows Server 2012的IIS8中放弃了SpinLock的使用(胡思乱想一下,也许微软的Hyper-V也面临过这个虚拟化的问题)。

    2. 从宿主机层面

    升级宿主机的Linux/Xen。

    “黑色10秒钟”的解决尝试

    昨天晚上,我们将虚拟机中的Windows换成了Windows Server 2012进行测试,惊喜地发现:

    不见SpinLock的身影!在Windows Server 2012的IIS8中,WAS没有使用SpinLock。也就是说在Windows Server 2012中不会出现“黑色10秒钟”。

    我们对“黑色10秒钟”问题的看法

    “黑色10秒钟”问题不仅仅是阿里云的问题,不仅仅是Linux/Xen的问题,也不仅仅是Windows的问题,它是虚拟化技术发展中要解决的一个问题。虚拟化技术是云计算发展的基石,所以我们觉得花时间学习它、研究它、思考它、分享它是有价值的。而且开发人员也越来越离不开它,因为未来的大多数程序都是运行在虚拟机中的。

  • 相关阅读:
    Python入门6 —— 流程控制
    Python入门5 —— 基本运算符
    Python入门4 —— 输入与输出
    实用小工具 下载链接
    [笔记] BGP in the Data Center (O'Reilly 2017)
    数据中心网络:Spine-Leaf 架构设计综述(2016)
    Using Open vSwitch* with DPDK for Inter-VM NFV Applications
    hung_task
    TCPDUMP and IPv6 and perf trace --no-syscalls
    Go非缓冲/缓冲/双向/单向通道
  • 原文地址:https://www.cnblogs.com/cmt/p/3116430.html
Copyright © 2011-2022 走看看