我正在 AWS RDS 上运行 MariaDB 10.1.34 实例。实例规格如下:
- 实例类:db.t2.large
- 存储:100GiB gp2
- 数据库大小:1.2 GiB
我正在尝试从与数据库位于同一可用区的 EC2 实例创建 mysqdump。虽然这有效,但性能非常糟糕。使用 mysqldump 转储数据库(大小仅为 1.2 GiB)大约需要 15 分钟。
我一直在监控 ec2 实例上的磁盘和网络使用情况。在 mysqldump 的前 5 秒内,网络使用量峰值约为 600 Mbit/s,然后降至仅 200 kbit/s 左右。与磁盘使用情况相同。
奇怪的是,重新启动数据库实例似乎可以暂时修复该行为。 mysqldump 一次用了 30 秒完成,之后又变慢了。
数据库实例的写IOPS徘徊在10-15左右,读IOPS在重启实例后才超过20。
如果您提供有关如何进一步调试此问题的任何建议,我将不胜感激。
编辑:
我还应该添加我的 mysqldump 命令:
ubuntu@server:~$ mysqldump --version
mysqldump Ver 10.13 Distrib 5.7.23, for Linux (x86_64)
ubuntu@server:~$ mysqldump -h <db_host> -p -P 3306 -u <read_only_user> --quick --single-transaction --skip-lock-tables <database> > dump.sql
答案1
这是一个你被击中的经典案例T2/T3突发性能。
您可能知道,当 T2/T3 实例空闲时,它们会积累“CPU 积分”,然后在需要时用于快速运行。然而,当实例全速运行时,这些积分就会耗尽,而当实例没有剩余时,实例就会变慢。请参阅此处了解更多详细信息:突发性能实例的 CPU 积分和基准性能
虽然上面只讲了CPU积分根据经验,我知道它直接影响网络性能同样,尽管我无法从亚马逊找到任何这方面的文件。这也是你所观察到的。
要解决这个问题,你有两个选择:
切换到M4/M5实例类型- 这些具有恒定的性能并且不受 CPU 积分的影响。但它们比 T2 / T3 稍贵一些。
使能够T2 无限环境 (看这里),每当实例积分降至 0 时,就会为您的实例积分充值,但需要支付一些额外费用。它可能是适合您的用例的最佳选择。但请注意,始终全速无限制地运行 T2 比运行相同大小的 M4 实例更昂贵。