我是一位经验丰富的SQL Server DBA,但我无法弄清楚这一点,想知道是否有人经历过相同的事情。
我有一个1 TB数据库在m4.10xlarge AWS实例上运行。我有完整/差异/传输备份,这些备份按各种时间表发生在单独的驱动器上,该驱动器是“ sc1” AWS卷类型-基本上是廉价的冷HDD存储类型。
作为附加的故障保护,我开始尝试将此备份驱动器上的文件复制到S3。这就是我的麻烦和这个大谜团开始的地方。我正在使用AWS CLI“ sync”命令,使用一个简单的命令将文件从sc1卷传输到S3,
aws s3 sync "j:\sqlbackups" s3://****bucketname****/sqlbackups/
由于备份文件的大小,初始同步可能需要几个小时。每当我运行此命令时,在某些时候,SQL Server都会开始精简到极其缓慢的速度。查询超时。无法建立连接。 CPU /内存使用率保持不变-没有异常。唯一与众不同的是包含数据文件峰值的驱动器上的“通读”:
https://www.dropbox.com/s/avqcyug700jdjzw/Screenshot%202019-12-08%2015.07.45.png?dl=0
但是,此驱动器(带有SQL Server数据文件的驱动器)与sc1备份驱动器之间没有任何关系。而且aws sync命令不应将驱动器与数据文件接触。不仅仅是SQL Server速度下降-所运行的整个Windows服务器都减速。启动Chrome需要30秒而不是1秒。在Event Viewer中读取事件需要60秒而不是<1秒。
一旦发生这种奇怪的减速,我会杀死aws sync命令,但问题仍然存在。我必须停止/重新启动SQL Server服务才能解决问题。
我很困惑如何发生这种情况。有什么想法吗?
编辑美国东部时间19/12/8下午5:39
我已经意识到,不仅仅是包含数据文件的驱动器,其吞吐量在S3传输过程中超出了图表,而是服务器上的所有驱动器。这使我了解了EBS存储的工作原理,并且我了解EBS存储是网络附加存储,因此会占用网络带宽。
这使我认为将多TB文件传输到S3正在饱和我的网络带宽,这使我的C / D / E驱动器的性能确实很差。这可以解释为什么在S3传输期间Windows服务器的每个部分(而不仅仅是SQL Server)会变慢。
没有意义的是,作为m4.10xlarge实例,此服务器具有10 Gbps连接,这意味着超过1 GB /秒的带宽。我的S3传输仅显示最大150 MB /秒的使用率。此外,m4.10xlarge实例类型是经过EBS优化的,这意味着EBS卷具有专用的带宽,不应与用于S3传输的带宽冲突。