[解決済み] Postgresの最大接続数を増やすには?
質問
私は製品にPostgres DBを使用しています。slick 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に
<強い
キャッシュデータ
.
- 1GB以上のRAMを搭載しているシステムであれば、1GB以上のRAMを搭載しているシステムであれば、1GB以上のRAMを搭載していないシステムであっても shared_buffers の値は、システム内のメモリの 1/4 です。
- 40%以上のRAMを使用した方が良いということはまずないでしょう。 より少ない量(25%など)よりも
- システムまたはPostgreSQLのビルドが32ビットである場合、次のことに注意してください。 shared_buffers を 2 ~ 2.5GB 以上に設定することは現実的ではありません。
- Windowsでは、shared_buffersに大きな値を設定しても、それほど効果がないことに注意してください。 比較的低い値にしておくとよいでしょう。 を使用し、代わりにOSのキャッシュをより多く使用します。Windows では 有効な範囲は 64MBから512MB .
2. kernel.shmmaxを変更する
カーネルの最大セグメントサイズを次のように増やす必要があります。
やや大きい
よりも
shared_buffers
.
ファイル内
/etc/sysctl.conf
を以下のように設定します。このパラメータが有効になるのは
postgresql
を再起動します(以下の行でカーネルmaxを
96Mb
)
kernel.shmmax=100663296
参考文献
関連
-
[解決済み] Postgresqlの再起動方法
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] PostgreSQLデータベースにアクティブな接続がある場合、そのデータベースを削除する方法は?
-
[解決済み】psql: FATAL: ユーザー "postgres" の Ident 認証に失敗しました。
-
[解決済み】Postgresのインストール時に入力したパスワードを忘れてしまいました。
-
[解決済み】ライブラリがロードされない。/usr/local/opt/readline/lib/libreadline.6.2.dylib
-
[解決済み】ubuntuでpostgresqlを徹底的にパージして再インストールする方法とは?終了
-
[解決済み】PostgreSQL ERROR:リカバリーと競合するため、ステートメントをキャンセルする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Postgresql - DBへの自動接続があるため、データベースを削除できない。
-
[解決済み] "psql: サーバーに接続できませんでした。リモートデータベースへの接続時に「Connection refused」エラー
-
[解決済み] PostgreSQLのCASE ... 複数条件付きEND
-
[解決済み] Psql はサーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません、5432エラー?
-
[解決済み】Postgresに一括挿入を行う最速の方法は何ですか?
-
[解決済み】PostgreSQLで、既存のテーブルに自動インクリメントの主キーを追加する方法は?
-
[解決済み】なぜPostgreSQLのようなデータベース上でRabbitMQのようなメッセージブローカーが必要なのでしょうか?
-
[解決済み】ubuntuでpostgresqlを徹底的にパージして再インストールする方法とは?終了
-
[解決済み】Docker化したPostgresデータベースのデータをボリュームで永続化する方法
-
[解決済み】PostgreSQLでUTCの現在時刻をデフォルト値として使用する。