私の製品にはPostgres DBを使用しています。スリック3を使用してバッチ挿入を実行しているときに、エラーメッセージが表示されます。
org.postgresql.util.PSQLException:FATAL:すみません、すでにクライアントが多すぎます。
私のバッチ挿入操作は、数千を超えるレコードになります。私のpostgresの最大接続は100です。
最大接続数を増やす方法は?
私の製品にはPostgres DBを使用しています。スリック3を使用してバッチ挿入を実行しているときに、エラーメッセージが表示されます。
org.postgresql.util.PSQLException:FATAL:すみません、すでにクライアントが多すぎます。
私のバッチ挿入操作は、数千を超えるレコードになります。私のpostgresの最大接続は100です。
最大接続数を増やす方法は?
回答:
増やすだけで max_connections
はいけません。あなたも増加する必要がshared_buffers
ありkernel.shmmax
ます。
考慮事項
max_connections
データベースサーバーへの同時接続の最大数を決定します。デフォルトは通常100接続です。
接続数を増やす前に、展開をスケールアップする必要がある場合があります。ただし、その前に、接続制限を増やす必要があるかどうかを検討する必要があります。
各PostgreSQL接続は、接続またはそれを使用するクライアントを管理するためにRAMを消費します。接続が多いほど、使用するRAMが多くなり、代わりにデータベースの実行に使用できます。
適切に作成されたアプリは、通常、多数の接続を必要としません。多数の接続を必要とするアプリがある場合は、接続をプールできるpg_bouncerなどのツールの使用を検討してください。接続ごとにRAMが消費されるため、それらの使用を最小限に抑える必要があります。
最大接続数を増やす方法
1.増加max_connection
とshared_buffers
に /var/lib/pgsql/{version_number}/data/postgresql.conf
変化する
max_connections = 100
shared_buffers = 24MB
に
max_connections = 300
shared_buffers = 80MB
shared_buffers
設定パラメータには、どのくらいの決定メモリされる専用に使用するPostgreSQLとのデータをキャッシュします。
2. kernel.shmmaxを変更します
あなたはあることを、カーネルの最大セグメントサイズを大きくする必要があるだろうわずかに大きく
超えますshared_buffers
。
ファイルで/etc/sysctl.conf
、次のようにパラメータを設定します。postgresql
再起動すると有効になります(次の行でカーネルを最大にします96Mb
)
kernel.shmmax=100663296
参考文献
cat /proc/sys/kernel/shmmax
変更する前に、現在のkernel.shmmax設定()を確認してください。最近のシステムでは、それはすでに途方もなく高く設定されており、変更すべきではありません。マインは18446744073692774399
Ubuntu 18.04ではデフォルトで設定されています。
ウィニーの素晴らしい答えに加えて、
セットアップでpostgresql.confファイルの場所を見つけられない場合は、いつでもpostgres自体に問い合わせることができます。
SHOW config_file;
私にとっては、max_connectionsを変更するだけでうまくいきました。
/etc/postgresql/11/main/postgresql.conf
/ var / lib / pgsql / dataまたは/ usr / local / pgsql / data /にあるpostgresql.confファイルのmax_connections変数を変更します