【问题标题】:Importing data to mysql RDS with python multiprocessor - RDS使用python多处理器将数据导入mysql RDS - RDS
【发布时间】:2015-05-21 16:21:52
【问题描述】:

我在 python 中使用多处理器运行数据导入器时发生了一些非常特殊的行为。我相信这是一个数据库问题,但我不知道如何追踪它。下面是我正在做的过程的描述:

1) 运行 XX 个处理器的多处理器文件,执行第二部分和第三部分

2) 队列处理器迭代一个拉取公司 ID 的 sqs 队列。这个 id 用于拉取存储在 mysql 中的 json 字符串。这个 json 字符串作为 json 对象加载并发送到一个解析文件,该解析文件对数据进行规范化,以便可以将其作为规范化数据导入 mysql。

3) 公司解析器/导入器读取 json 对象并在 mysql 数据库中创建插入,对数据进行规范化。这些以 XXX 大小的批次批量插入 RDS 以缓解 IOPS 问题。

此代码从 c4.Large 实例运行并且有效。启动时,它运行速度很快(每分钟插入约 30,000 次),而不会耗尽 RDS 或 ec2 实例上的 IOPS、CPU 或其他资源。然后,经过一定时间(5-30 分钟)后,RDS 服务器的 CPU 下降到 ~20% 并且有一种奇怪的心跳类型的节奏。我已尝试启动额外的 ec2 实例以加快此过程,并且导入速度保持不变且缓慢(每分钟插入约 2000 次),因此我认为瓶颈在于 RDS 实例。我尝试将 RDS 实例的大小从中等更改为大,但没有任何变化。我还尝试将 RDS 实例的 IOPS 更改为 10k 的预置 SSD。这也没有解决问题

据我所知,RDS 服务器存在某种限制或限制。但是,我不知道还能去哪里看。限制的内容没有危险信号。

您能否提供其他可能导致此类行为发生的原因?我不知道还要测试什么。

当前设置是 500gb t2.medium RDS 实例,写入 IOPS 约为 200,CPU 约为 20%,读取 IOPS

【问题讨论】:

  • t2.medium?在 RDS 实例的 cloudwatch 监控中检查您的 CPU 积分余额图表。 CPU @ 20% 具有周期性“心跳”类型的节奏强烈表明您正在耗尽它。
  • @Michael-sqlbot - 这正是问题所在。我从未听说过 CPU 信用...我找到了这篇文章,但希望能以通俗的方式进行任何解释,以及解决问题和避免问题的建议。一个 c4.Large 实例?

标签: python mysql linux amazon-ec2 rds


【解决方案1】:

我通过将我的实例类型升级为 m3.Large 实例解决了这个问题,没有有限的 CPU 积分。现在一切正常。

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2020-05-11
    • 2014-11-02
    • 2019-03-21
    • 2018-06-19
    • 2020-06-04
    • 2019-05-03
    • 2017-11-14
    相关资源
    最近更新 更多