Amazon ec2 导致EC2实例上CPU峰值的磁盘延迟

Amazon ec2 导致EC2实例上CPU峰值的磁盘延迟,amazon-ec2,cpu-usage,disk,latency,Amazon Ec2,Cpu Usage,Disk,Latency,我们遇到了一个有趣的问题,我们在EC2实例上看到了CPU峰值,同时我们也看到了磁盘延迟的峰值。这是CPU峰值的模式 CPU峰值在30秒内从50%降至100% 它在两分钟内保持100%的利用率 CPU利用率在10秒内从100降至几乎为0。同时几乎磁盘延迟也恢复正常 这个问题在不同的AWS ec2实例上一周内发生过几次,现在仍在发生。在所有情况下,我们都会看到CPU峰值和磁盘延迟,CPU峰值的模式与上面类似 我们使用了进程监控工具来检查是否有任何特定进程占用了CPU。该工具显示,ec2实例上的每个进

我们遇到了一个有趣的问题,我们在EC2实例上看到了CPU峰值,同时我们也看到了磁盘延迟的峰值。这是CPU峰值的模式

  • CPU峰值在30秒内从50%降至100%
  • 它在两分钟内保持100%的利用率
  • CPU利用率在10秒内从100降至几乎为0。同时几乎磁盘延迟也恢复正常
  • 这个问题在不同的AWS ec2实例上一周内发生过几次,现在仍在发生。在所有情况下,我们都会看到CPU峰值和磁盘延迟,CPU峰值的模式与上面类似

    我们使用了进程监控工具来检查是否有任何特定进程占用了CPU。该工具显示,ec2实例上的每个进程开始占用大约两倍的CPU。例如,我们的应用服务器CPU利用率从.75%提高到1.5%。Nginx和其他过程的类似观察结果。没有单个进程占用超过8%的CPU。我们研究了我们的交通模式,没有任何异常情况会导致这种情况。所以问题是

  • 磁盘延迟的增加会导致如上所述的CPU峰值模式吗?通常,磁盘延迟会导致CPU峰值吗

  • 我敢打赌:您运行的是t2/t3机器,它们是稳定的实例。您可以随时访问30%的CPU,而学分制为剩余的70%创建了一个公平使用的可预测模式。您通过运行实例获得积分,而CPU使用率超过30%则会失去积分

    您的积分用完了,AWS会减少您对CPU的访问。当您的余额中添加了信用卡时,系统会再次平稳运行

    t2和t3没有系统信用体系,您可以在此处找到详细信息:

    您有两种解决方案:

    • 举一个更大的例子,这样你每小时会有更多的学分和更好的基线,或者像c5、m5、r5等其他系列
    • 为t3实例选择无限制模式选项

      • 我建议加快存储速度。cpu的目标是加起来达到100%。限制是以一种奇怪的方式工作的,它模拟“未知”原因的使用。原因可能是:

        • 空闲时间(注意这里是你考虑的免费CPU,这就是为什么我说它加起来为100%)
        • 用户时间(正常使用)
        • 系统时间(系统使用)
        • iowait(您的案例,cpu正在等待HDD/SSD应答)
        • 不错的时间(不包括在用户时间中的低优先级进程)
        • 中断时间(外部设备“通话”时间-如果您有许多usb设备等,可能是您的情况-不太可能)
        • softirq(已处理中断的排队工作-见上文)
        • 窃取时间(Clement正在描述的案例)
        我建议确定哪一个是你的情况

        you can try below to get the info:
        $ sudo apt-get install sysstat
        $ mpstat -P ALL 1
        
        从这里您可以选择两个选项:)

      • EBS允许您运行名为“IO1”的IO优化卷(中等价格-中等速度)
      • 更换机器并在“Nitro系统”中使用一台(提供裸机功能-即:仿佛您直接连接了实际NVMe-最大可能速度)

      • 来源:

        当然有可能,但对于行为良好的代码来说似乎不太可能。你能提供更多的细节吗?e、 g.正在运行哪些程序,您如何测量这些内容?您是否有任何东西同时出现在日志中?e、 g.您的代码正在执行的操作,或者某个守护进程正在唤醒?您可以提供EC2和EBS的设置吗?(实例类型、EBS类型和大小…)实例类型为m5.2xlarge,EBS类型为gp2,大小为320
        m5.2xlarge  8   37  32 GiB  EBS Only    $0.384 per Hour
        m5d.2xlarge 8   37  32 GiB  1 x 300 NVMe SSD    $0.452 per Hour