AWSには単一のマスター/シングルストリーミングレプリカPostgres 9.3 dbがあります。負荷はそれほど高くありません-これは開発/ステージング環境です。 (プロダクションは同様のメトリックを示しています)。ポイントは、Cloudwatchに表示されている "ReplicaLag"が0〜200秒の間、日中に激しく振動することです。 max_wal_sendersを5から10に変更せずに変更しました。
これを診断するための提案はありますか?
(これはt2.smallマスターとt2.smallレプリカですが、本番インスタンスは大きく、同じ問題が発生します。CPUは2%未満、接続は60未満、iopsはわずか5〜15カウント/秒です)。
ステージングRDSでも同じ問題が発生しました。しばらくして、私は 言うブログ投稿 を見つけました:
非常にビジーなデータベースでは、1秒あたりの書き込み数が多いため、この数はかなり正確なままです。ただし、書き込みが少ないシステムでは、最後に再生されたトランザクションのタイムスタンプが増加していないため、「replication_delay」は継続的に増加します。
これをテストするために、ランダムなレコードを0.5秒ごとに更新する単純なスクリプトを作成し、ラグは0になりました。
PostgreSQLでのレプリカの制限の読み取り -の下のAWSドキュメントから
ソースDBインスタンスでユーザートランザクションが発生していない場合、PostgreSQLリードレプリカは最大5分のレプリケーションラグを報告します