博客
关于我
云计算之路-阿里云上:对“黑色30秒”问题的猜想
阅读量:416 次
发布时间:2019-03-06

本文共 1357 字,大约阅读时间需要 4 分钟。

##云计算环境下的“黑色30秒”之谜:从请求进到响应的断联之舞

近日,我们在云计算环境中发现了一个有趣的现象,称之为“黑色30秒”。这个现象主要表现为两个指标的异常:请求队列(Requests Queued)呈上升趋势,而HTTP到达率(Arrival Rate)却表现得异常低下。这种反常现象不仅让我们感到困惑,更促使我们深入探究其背后的原因。

一、问题背景

在传统的IT环境中,网络问题通常可以通过简单的排查来解决。但在云计算环境中,底层的网络架构和流量调度机制显得尤为复杂。我们的系统架构如下:

用户浏览器 → SLB(阿里云负载均衡) → VM(虚拟机) → Web服务器Web服务器 → VM → SLB → 用户浏览器

在这个体系中,请求的传递路径和响应的返回路径看似简单,实则包含了诸多潜在的环节和复杂的协议处理。

二、问题表现

  • 请求队列上升:随着时间的推移,我们发现请求数量在逐渐增加。这个现象表明系统处理能力不足以应对当前的请求流量。

  • HTTP到达率下降:尽管前方的请求队列在增加,但实际的新请求到达率却明显降低。这一点与传统网络拥塞情况下的表现不符。

  • “黑色30秒”现象:这个现象最终表现为在30秒后的突变性变化。请求队列在30秒后突然下降,而HTTP到达率也随之恢复。

  • 三、问题猜想

    经过深思熟虑,我们提出以下猜想:

  • SLB或VM的异常行为:在特定条件下,负载均衡服务器(SLB)或虚拟机(VM)可能会在背后进行某些不正常的操作。例如,异常断开一些TCP连接。

  • TCP连接的断开与重建

    • 用户端的感知:用户端的TCP连接被断开,但用户并未立即察觉。他们会继续通过这个断开的连接发送请求,直到遇到超时。
    • Web服务器的感知:Web服务器仍然通过这个断开的连接发送响应。由于对方没有回应,Web服务器会一直等待,直到超时。
  • 请求处理的双重影响

    • 前端影响:用户端的请求无法成功到达Web服务器,导致HTTP到达率下降。
    • 后端影响:Web服务器由于等待超时而无法及时处理后续请求,导致请求队列持续增加。
  • 四、问题验证

    为了验证这个猜想,我们进行了以下分析:

  • 用户请求的处理路径

    • 浏览器请求 → SLB → VM → Web服务器
    • Web服务器响应 → VM → SLB → 浏览器
  • TCP连接的状态变化

    • 断开状态:在断开的瞬间,用户端和Web服务器的TCP连接处于半开状态。
    • 重建状态:当用户端检测到超时后,会重新建立TCP连接,发送新的请求。
    • 处理延迟:Web服务器在等待对方的ACK包时,会将处理资源占用,导致后续请求处理受阻。
  • 五、问题结论

    通过对问题的深入分析,我们认为“黑色30秒”现象的根本原因在于SLB或VM在特定条件下异常断开TCP连接。这种行为导致用户端请求无法到达Web服务器,同时使Web服务器的处理能力受到影响。

    六、解决思路

    针对这一问题,我们提出以下解决方案:

  • 监控和预警:建立更全面的监控体系,及时发现异常的TCP连接行为。

  • 协议优化:在负载均衡和虚拟化层面优化TCP协议的处理逻辑,减少异常断开的可能性。

  • 流量控制:通过智能流量控制算法,限制因异常TCP连接导致的资源浪费。

  • 通过以上措施,我们希望能够有效遏制“黑色30秒”现象的影响,为系统的稳定运行保驾护航。

    转载地址:http://aiekz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现声音录制播放程序(附完整源码)
    查看>>
    Objective-C实现备忘录模式(附完整源码)
    查看>>
    Objective-C实现复制粘贴文本功能(附完整源码)
    查看>>
    Objective-C实现复数类+-x%(附完整源码)
    查看>>
    Objective-C实现外观模式(附完整源码)
    查看>>
    Objective-C实现多尺度MSR算法(附完整源码)
    查看>>
    Objective-C实现多种方法求解定积分(附完整源码)
    查看>>
    Objective-C实现多组输入(附完整源码)
    查看>>
    Objective-C实现多项式函数在某个点的评估算法(附完整源码)
    查看>>
    Objective-C实现多项式哈希算法(附完整源码)
    查看>>
    Objective-C实现大位数乘法(附完整源码)
    查看>>
    Objective-C实现大根堆(附完整源码)
    查看>>
    Objective-C实现奇偶检验码(附完整源码)
    查看>>
    Objective-C实现奇偶转置排序算法(附完整源码)
    查看>>
    Objective-C实现奇异值分解SVD(附完整源码)
    查看>>
    Objective-C实现子集总和算法(附完整源码)
    查看>>
    Objective-C实现字符串autocomplete using trie(使用 trie 自动完成)算法(附完整源码)
    查看>>
    Objective-C实现字符串boyer moore search博耶摩尔搜索算法(附完整源码)
    查看>>
    Objective-C实现字符串IP地址转DWORD地址(附完整源码)
    查看>>
    Objective-C实现字符串jaro winkler算法(附完整源码)
    查看>>