线程越多,IOPS 越少?

线程越多,IOPS 越少?

我刚刚开始尝试 AWS。我在 RDS 上有一个 Postgres 微型实例,并且在 c4.large 上运行爬虫。当我只有一个蜘蛛(一个线程)时,我获得大约 10 个写入 IOPS。但如果部署了两个蜘蛛(2 个线程),我获得大约 7 个写入 IOPS。如果我理解正确的话,由于我分配了 20gb,最大 IOPS 应该是总共 60IOPS。我已将监控附在下面。

当只部署一个蜘蛛时: 在此处输入图片描述

当第二只蜘蛛被部署时: 在此处输入图片描述

请注意从平均 10 写入 IOPS 下降到平均 7 写入 IOPS。

任何帮助都感激不尽。

答案1

您使用哪种 I/O 后端?是机械的还是闪存 (SSD) 的?

对于机械后端,您观察到的是预期行为:Postgres 是一个同步写入繁重的应用程序,这意味着即使您增加正在运行的线程,正在进行的写入(队列深度)仍将保持在较低水平。同时,您不断强制磁盘磁头移动到(通常)非常不同的位置。

换句话说,您正在给磁盘施加更大的负载,但却没有享受更长的队列深度带来的好处。

正是因为这个原因,数据库通常部署在具有电池备份的写回缓存的服务器中:写回缓存吸收多个写入然后合并,从而为磁盘操作提供更高的队列深度。

相关内容