Amazon-Web-Services

執行緒越多IOPS越少?

  • March 14, 2015

我剛剛開始嘗試 AWS。我在 RDS 上有一個 Postgres 微實例,我正在 c4.large 上執行爬蟲。當我只有一個蜘蛛(一個執行緒)時,我得到大約 10 個寫入 IOPS。但如果部署了兩個蜘蛛(2 個執行緒),我只得到大約 7 個寫入 IOPS。如果我理解正確,因為我分配了 20gb,所以最大 IOPS 總共應該是 60IOPS。我在下面附上了監控。

當只部署一個蜘蛛時: 在此處輸入圖像描述

當第二個蜘蛛被部署在旁邊時: 在此處輸入圖像描述

請注意從平均 10 寫入 IOPS 下降到平均 7 寫入 IOPS。

任何幫助都感激不盡。

您使用的是哪種 I/O 後端?它是機械式的還是快閃記憶體 (SSD) 的?

在機械後端的情況下,您觀察到的是預期的行為:Postgres 是一個同步寫入繁重的應用程序,這意味著即使您增加正在執行的執行緒,正在進行的寫入(隊列深度)也將保持在較低水平。同時,您不斷地迫使磁碟的磁頭移動到(通常)非常不同的位置。

換句話說,您在磁碟上發出了更重的負載,而沒有更長隊列深度帶來的好處。

這就是原因,因為數據庫通常部署在具有電池備份的回寫記憶體的伺服器中:回寫記憶體吸收多個寫入並隨後合併,從而為磁碟操作提供更高的隊列深度。

引用自:https://serverfault.com/questions/675452