dockerのpostgresデータベースの/ dev / shmサイズの推奨

Sep 11 2020

Dockerコンテナにpostgresql11.7データベースがあります。

ここ"pq: could not resize shared memory segment "/PostgreSQL.XXX" to XXX bytes: No space left on device"で説明する問題が発生しました。

解決策が役に立ちました。もう問題はありません。しかし、Postgresを使用するDockerコンテナのshm_sizeにはどのサイズを設定する必要がありますか?

何かお勧めはありますか?shm_sizeの「最適サイズ」をどのように計算できますか?

回答

2 LaurenzAlbe Sep 11 2020 at 15:32

共有メモリを使用するものは2つあります。

  • サーバーの起動時に割り当てられる共有メモリ。これはいくつかの部分で構成されていますが、最大のシェアはshared_buffersデータキャッシュです。

    したがって、それよりも多くの共有メモリが必要です。

  • 並列ワーカー間で通信するために並列クエリによって割り当てられた共有メモリセグメント。

    それらのサイズは転送されるデータに依存し、それらのいくつかは割り当てることができるため、それは制御が難しいリソースです。

メモリに制約のあるシステムでは、並列クエリを無効にすることをお勧めします。クエリは高速になりますが、クエリごとにより多くのリソースを使用するため、全体的なスループットは向上しません。1つのクエリで多くのリソースをスローする場合に適しています。

並列クエリを無効にするにはmax_parallel_workers、0に設定します。