web-dev-qa-db-ja.com

Postgresなぜスワップ使用量が増えているのですか?それを減らす方法は? -AWS RDS

AWS-RDSにpostgresDBがあるSwap Usage絶えず上昇しています。

なぜ上昇しているのですか?再起動してみましたが、沈みません。 AWSは、スワップの使用率が高いのは「パフォーマンスの問題を示している」と書いています。

このDBにデータを書き込んでいます。 CPUとメモリは正常に見えます: enter image description here

正確に言うと、私は
db.t2.micro-インスタンスおよび現時点では5つのテーブルの最大30/100GBデータ-汎用SSD。デフォルトのpostgresql.confを使用します。

スワップグラフは次のようになります。

enter image description here

スワップ使用の警告:

enter image description here

8
Rentrop

クエリが使用可能なメモリボリュームを使用しているようです。したがって、クエリ実行プランを調べて、最大の負荷を見つける必要があります。そのクエリは、postgresqlで使用可能なメモリを超えています。通常、過度の結合(つまり、データベース構造が悪いため、該当する場合は非武装化する方がよい)、ネストされたクエリが多い、またはIN句を含むクエリ-これらは典型的な容疑者です。 Amazonはpostgresql.confに対して可能な限り多くを提供したと思いますが、これらのデフォルト値はこの小さなマシンには非常に適しています。

ただし、スワップサイズが使用可能なメモリを超えておらず、SSDを使用している場合を除いて、それほど害はありません。

5
Ilya Dyoshin

明らかに、メモリが不足しています。 db.t2.microには1GBのRAMしかありません。 htopの出力を調べて、どのプロセスがメモリの大部分を使用しているかを確認し、メモリ使用量を最適化する必要があります。また、pgtop( http://ptop.projects.pgfoundry.org/ )と呼ばれるNiceユーティリティがあり、現在のクエリ、読み取られた行数などを表示します。これを使用して、でのpostgress状態を表示できます。リアルタイム。ちなみに、pgtopをインストールできない場合は、posgres内部ツールから同じ情報を取得できます-postgres統計コレクターのドキュメントを確認してください https://www.postgresql.org/docs/9.6/static/monitoring- stats.html

実際、問題が正確に何であるかを言うのは難しいですが、db.t2.microは非常に限られたインスタンスです。特に本番環境でpostgresを使用している場合は、より大きなインスタンスを使用することを検討する必要があります。

0
mylh

チェックしてください

select * from pg_stat_activity;

そしてそのプロセスは時間がかかるとどのように多くのプロセス眠っかどうかを確認し、あなたの必要性に応じて、あなたのRDSのDbParameterを変更してみてください。

0