什么是 SWAP 文件?为什么它们会占用我的 AWS DMS 实例的空间?

1 分钟阅读
0

我的 AWS Database Migration Service(AWS DMS)数据库实例的存储空间正被实例上生成的交换文件占用。什么是 SWAP 文件,如何减少交换文件的生成?

简短描述

在 AWS DMS 中,SORTER 组件缓存源中正在进行的更改。组件这样做是为了在将事务合并、筛选和数据转换等操作应用到目标之前对其进行管理。

如果源处理的性能超过了目标应用的表现,则目标将无法处理传入的更改。或者,如果长事务超过最大内存分配(MemoryLimitTotal)和时间(MemoryKeepTime),则内存中的事务将溢出到复制实例磁盘,称为交换文件或分类器文件。

像这样的交换文件不同于在服务器内存不足以进行处理时创建的操作系统交换文件。因此,此数据不包含在 Amazon CloudWatch 的 SwapUsage 指标中。

解决方法

您可能会在任务日志中看到类似以下内容的消息:

“[SORTER ]I: Reading from source is paused.Total storage used by swap files exceeded the limit 1048576000 bytes (sorter_transaction.c:110) 00000849: 2021-04-28T07:19:20:987696 [SORTER ]I: Reading from source is resumed (sorter_transaction.c:116)]([SORTER ]I:从源读取已暂停。交换文件使用的总存储空间超过限制 1048576000 字节(sorter_transaction.c:110)00000849: 2021-04-28T07:19:20:987696 [SORTER]I:恢复从源读取(sorter_transaction.c:116)])”

这是一条信息消息,不是错误。当 AWS DMS SORTER 组件使用的交换文件大小达到 1GB 限制(硬编码限制)时,您会看到此消息。AWS DMS 3.4.2 及更高版本包含一项功能,该功能通过限制复制实例的存储卷上可以拥有的最大交换文件数量来防止存储已满的情况。因此,当 DMS SORTER 组件使用的交换文件达到 1 GB 限制时,您会看到此消息。

达到此 1 GB 限制时,SORTER 组件将暂停 SOURCE CAPTURE。然后,AWS DMS 会将交换文件中的更改应用到目标数据库。应用磁盘中的交换更改后,或者当交换文件降至 1 GB 以下时,AWS DMS 将恢复源捕获。

注意:发生这种情况时,任务将继续运行。只有 SOURCE CAPTURE 暂停。

减少交换文件的生成

使用以下最佳实践来帮助减少或避免在 AWS DMS 实例上生成交换文件:

  • 目标没有主键或索引
  • 目标存在资源瓶颈
  • 复制实例存在资源瓶颈
  • 复制实例与目标之间存在网络问题
  • 根据您的引擎类型,使用批量应用模式ParallelApplyThreads 来改进目标应用。
  • 如果您在源位置遇到长时间运行的事务,请在源数据库中使用频繁提交来帮助缓解此问题。
  • 如果复制实例上有可用内存,则可以增加 MemoryLimitTotalMemoryKeepTime,以使更改在交换到磁盘之前在内存中保留更长的时间。请务必增加这两个参数,因为在达到限制后,AWS DMS 会将更改交换到磁盘。

相关信息

更改处理优化设置

AWS 官方
AWS 官方已更新 2 年前
没有评论