更换根卷后 AWS EC2 机器速度非常慢

更换根卷后 AWS EC2 机器速度非常慢

我有一台运行良好的生产机器(c4.2xlarge)。但是,当我执行以下操作时:

  1. 在机器运行时对根卷进行快照(我知道,建议不要这样做,但这对我来说很好)
  2. 从快照创建卷
  3. 将新创建的卷作为根设备 (/dev/sda1) 附加到预生产机器 (c4.xlarge)
  4. 启动预生产机器

新启动的机器响应非常缓慢地最初。随着我继续操作机器,速度开始提高,直到几个小时后,它的响应速度与我更换根卷之前一样快。

为什么会发生这种情况?

直观来看,这似乎是缓存问题,好像机器需要“预热”才能按预期运行。但这对我来说没有任何意义,因为我所做的只是替换机器的根卷。

答案1

EBS 快照存储在 S3 上。当您从快照创建新的 EBS 卷时,数据会根据块的要求从 S3 流式传输到 EBS。我怀疑它还可能会降低整个卷的性能,但这可能需要一些时间,这就是为什么它会优先考虑您需要的块现在

要解决此问题,您需要预热音量。完整流程请点击这里但我将在这篇文章中概述要点

  1. 使用 lsblk 命令列出实例上的块设备。找到新设备(此处以粗体显示)

[ec2-user ~]$ lsblk
NAME  MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
**xvdf**  202:80   0  30G  0 disk
xvda1 202:1    0   8G  0 disk /
  1. 使用 dd 或 fio 实用程序读取设备上的所有块。

[ec2-user ~]$ sudo dd if=/dev/**xvdf** of=/dev/null bs=1M

请注意,新的 EBS 卷不要需要预热,因为 S3 上没有存储任何内容。

注意:需要多余的点才能使格式正常工作。

答案2

这可能是由于磁盘内容缓存在 RAM 中。在服务器运行时,文件系统中的内容会缓存在 RAM 中,这样就可以以 RAM 速度检索这些块,而不必等待从磁盘读取块。

启动新服务器时,启动时不会缓存任何内容,但在应用负载时会填充缓存,从而提高性能。

相关内容