我有一个 Amazon EC2 实例 (c1.medium,ami-ed46a784),大约每 32 小时就会经历一次平均负载的短暂峰值。平均负载通常约为 0.15,但在这些峰值期间会升至 3+ 并持续约 15 分钟。在此期间,CPU 使用率、磁盘流量、交换使用率、IRQ 中断、apache 流量或我的 collectd 安装报告的任何其他指标均没有增加。禁用我添加到基本安装的所有 cron 作业没有任何效果。此实例运行厨师、apache、mysql、couchdb、memcached 以及 twisted python 服务——所有这些服务目前接收的流量都很少。
以下是在一次峰值期间收集的一些数据:
/usr/bin/top 输出: 顶部 - 14:31:00 启动 65 天,20:48,1 个用户,平均负载:3.00、2.13、1.01 任务:共 125 个,1 个正在运行,124 个正在休眠,0 个已停止,0 个僵尸 CPU:0.8%us,0.5%sy,0.0%ni,98.0%id,0.2%wa,0.0%hi,0.1%si,0.4%st 内存:总计 1788724k,已使用 1723448k,可用 65276k,缓冲区 179284k 交换:总计 917496k,已使用 124k,可用 917372k,缓存 680404k ...CPU 使用率最高的进程只有 4%...
/usr/bin/iostat 输出: Linux 2.6.21.7-2.fc8xen (foo.example.com) 11/08/09 _i686_ (2 CPU) 平均 CPU:%用户%nice%系统%iowait%steal%idle 0.78 0.00 0.80 0.19 0.42 97.95 设备:tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda2 0.00 0.00 0.01 8762 74472 sda3 0.00 0.00 0.00 944 288 sda1 19.29 0.24 242.63 1354218 1380794096 平均存款 0.34 0.07 6.50 393928 36997032
/usr/bin/mpstat 输出: Linux 2.6.21.7-2.fc8xen (foo.example.com) 11/08/09 _i686_ (2 CPU) 14:31:00 CPU %usr%nice%sys%iowait%irq%soft%steal%guest%idle 14:31:00 全部 0.78 0.00 0.51 0.19 0.00 0.14 0.42 0.00 97.95
/usr/bin/free -m 输出: 已使用的、可用的、缓存的共享缓冲区总数 内存:1746 1683 63 0 175 664
同一物理主机上其他人的实例是否可能导致这些峰值?在峰值期间我应该尝试收集其他有助于诊断问题的数据吗?还有什么因素会影响平均负载?
这个问题也发了在 AWS 论坛上。
更新 #1
答案1
我会检查您主机上运行的 cronjobs。事实上,如果您有一个 virt,并且在同一物理主机上有另一个 virt 使用例如 sata 驱动器带宽,并且您想同时写入磁盘,则它会导致比通常在单个非虚拟化、非共享环境中更大的负载。对于任何 IO 操作都是如此。顺便问一句。当您在 top 中时,您介意按 1 来查看所有核心吗?似乎您的主机上没有实际负载,至少没有 IOwait 或任何我们可以看到 3.00 负载的原因。我很好奇您在两个核心上都能看到什么。此外,如果您可以安装 dstat 并运行它来检查发生了什么。