我刚开始尝试AWS。我在RDS上有一个Postgres微实例,我正在c4.size上运行一个爬虫。当我只有一个蜘蛛(一个线程),我得到大约10个写IOPS。但是如果部署了两个蜘蛛(2个线程),我只得到大约7个写IOPS。如果我正确理解,因为我已经分配了20 in,最大IOPS应该是总共60 IOPS。我把监控附在下面。
当只部署了一只蜘蛛时:

当第二只蜘蛛被部署在旁边时:

注意,从平均10写IOPS下降到平均7写IOPS。
任何帮助都将不胜感激。
发布于 2015-03-14 10:08:41
您使用的是什么样的I/O后端?它是机械的还是闪光的?
在机械后端的情况下,您所观察到的是预期的行为: Postgres是一个同步写重的应用程序,这意味着即使增加了运行的线程,在运行中写入(队列深度)也将保持在较低的水平。同时,您不断地强迫磁盘的磁头移动到(通常)非常不同的位置。
换句话说,您将在磁盘上发出更重的负载,而不会因为队列深度更长而带来好处。
这正是原因所在,因为数据库通常部署在具有电池备份的写回缓存的服务器中:写回缓存吸收多次写入,然后合并,从而为磁盘操作提供更高的队列深度。
https://serverfault.com/questions/675452
复制相似问题