問題タブ [pgbouncer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - TLS/SSL クライアントとサーバー接続を備えた pgbouncer 1.7
Postgres 9.4.1 および pgbouncer 1.6.1 を実行している同様のサーバーから借用した設定で、複数のユーザーがポート 6543 で pgbouncer を介してデータベースに接続しています。に設定された TLS/SSL を使用して、(ポート 5432 で) データベースに直接接続することしかできませんverify-full
。
ただし、これらの構成を組み合わせた環境を作成する必要があります。すべてのユーザーが TLS/SSL を介してデータベースに接続し、pgbouncer を介した接続プールを使用する環境を作成する必要があります。つまり、最近リリースされた (2015 年 12 月 18 日現在) pgbouncer 1.7 で新しい TLS/SSL 機能を使用する必要があることを意味しますが、新しい TLS パラメーターのドキュメントは別として、新しい機能を示す利用可能な例は見つかりませんでした。 2番目のサーバーでTLS / SSLを使用してpgbouncerを介して有効な接続を確立することに成功しました。
postgresql.conf
、、、pg_hba.conf
およびpgbouncer.ini
2 番目のサーバーからの適切な抜粋を含めました。
postgresql.conf:
pg_hba.conf:
pgbouncer.ini:
pgbouncer は起動しますが、ユーザー 'lalligood' として接続しようとすると、次のエラーが発生します。
pgbouncer.log には、試行ごとに次の行が含まれます。
必要に応じて、さらに情報を提供できます。これを機能させるために見落としている可能性があることについて誰かがアドバイス/提案を持っている場合は、助けていただければ幸いです!
java - タイムアウト例外なしでクエリに長い時間がかかる場合、hibernate を使用して実行された Postgre クエリの実行がドロップされる
2 時間以上かかる postgres クエリを実行しています。このクエリは、Java プログラムで hibernate を使用して実行されます。約 1.5 時間後、クエリは pg_admin のサーバー ステータスに表示されなくなります。
データベース上のアクティブなクエリのリストからクエリが消えたため、成功またはタイムアウト例外が発生することを期待しています。しかし、私は何も取得しません。(例外はありません)、スレッドは待機状態でスタックします。テーブルにいくつかの挿入を行うはずだったので、クエリが終了していないことはわかっていますが、テーブルに期待される行が見つかりません。
接続プールに pgbouncer を使用しており、query_timeout が無効になっています。休止状態のタイムアウトだった場合、例外が発生するはずでした。DB マシンとクライアント マシン (Java プログラムを実行しているマシン) の OS パラメータ
- tcp_keepalive_time は 7200 (秒)
- tcp_keepalive_intvl = 75
- tcp_keepalive_probes = 9 (プローブの数) 両方のマシンで RHEL オペレーティング システムを実行します。私はその問題に指を置くことができません。
postgresql - 複数のデータベース - pgbouncer を使用した共通の接続プール
単一サーバー内のテナントごとに 1 つのデータベースを使用して、マルチテナントがセットアップされています。pgbouncer を使用してすべてのデータベースの共通プールをメインにすることは可能ですか? 1 つのサーバーにあるデータベースの数は、数百に及ぶ場合があります。アプリケーションから pgbouncer への多数の接続を持つことができますが、postgres サーバーとの接続数によって制限されます。このシナリオでの最善のアプローチは何ですか?
postgresql - AWS RDS Postgre インスタンスへの SSH
postgres rds に pgbouncer をインストールしたかったのですが、ec2 インスタンスにアクセスするのと同じ方法でインスタンスにアクセスできません。マシンにsshできる方法はありますか(psqlではなく、正常に動作しています)。
database - pgbouncer-1.4 を PostgreSQL -9.0 データベースと統合する方法
ここにリンクの説明を入力してくださいpgbouncer と postgreSQL データベースは初めてです。pgbouncer を postgreSQL データベースと統合しようとしています。pgbouncer を正常にインストールした後、pgbouncer の起動中にエラーが発生しました。
ここでアイデアを共有してください この問題を解決する方法.
よろしくお願いします
postgresql - sidekiq から PostgreSQL への接続プールを管理するにはどうすればよいですか?
問題数百の sidekiq バックグラウンド プロセスを実行する Rails アプリケーションがあります。それらはすべて 250 の接続を提供することに満足していない PostgreSQL データベースに接続します - それは可能ですが、すべての sidekiq プロセスが誤ってデータベースにクエリを送信すると、それは崩壊します。
オプション 1データベースの前に pgBouncer を追加することを考えていましたが、search_path
どの「国」(PostgreSQL スキーマ) を決定するために各ジョブ処理の開始時に を設定するかに大きく依存しているため、現在はトランザクション モードを使用できません。 (アパートメントジェム)に取り組む。この場合、セッション ベースの接続プーリング モードを使用する必要があります。ただし、これは、私の知る限り、各ジョブの処理後に接続を切断し、接続をプールに解放する必要があり、それはパフォーマンス面で非常にコストがかかりますよね? 私は何かを見逃していますか?
オプション 2アプリケーション層ベースの接続プールを使用することもオプションですが、sidekiq を使用して PostgreSQL でそれを行う方法がよくわかりません。
オプション 3私が思いもよらなかったことはありますか?
postgresql - RDS 接続によって制限される自動スケーリング
EC2 で実行されているいくつかの夜間ジョブがあり、マシンの数は SQS のメッセージの数によってスケーリングされます。私のプロセスでは、Postgres RDS データベースからの読み取りが必要です。今、これらは私が直面している問題です。
- 接続が利用できないため、特定の数を超えてスケーリングできません。
- を使用して接続プールを作成しようとしましたが
pgbouncer
、別の設定でも試しましたが、結果のセットで多くのデータが欠落しています。
postgresql - pgbouncer kill コマンドは後続の接続をブロックします
https://pgbouncer.github.io/usage.htmlによると、実行KILL db;
すると、指定されたデータベース上のすべてのクライアントとサーバーの接続がすぐにドロップされます。
を使用して、テスト環境でpostgresへのすべての接続を停止しようとしていました
そして、すべてのクライアントとサーバーの接続が実際に閉じられましたが、postgres に接続できなくなりました。
postgresql.log には、次のメッセージがあります
pgBouncer realod は状況を変えず、再起動のみが役立ちます。
- 誰が何が起こったのか説明できますか?
- 再起動せずに pgbouncer を介して postgres-connection を修復する方法はありますか?
- データベース接続のロックが kill コマンドの予期される動作である場合、新しい接続をブロックせずにすべての接続を閉じるにはどうすればよいですか?
ありがとう、ミハイル
django - 関数内のPostgreアドバイザリロックにより同時実行が可能
状況に応じてシリアル化されたアクセスを必要とする関数がある場合に問題が発生しています。これは、アドバイザリ ロックを使用する良いケースのように思えました。ただし、かなりの負荷がかかると、シリアル化されたアクセスが発生しておらず、関数への同時アクセスが発生していることがわかりました。
この機能の目的は、イベントの「在庫管理」を提供することです。つまり、イベントが売り過ぎないように、特定のイベントの同時購入を制限することを目的としています。これらは、アプリケーション/データベース内で使用される唯一のアドバイザリ ロックです。
イベントには、eventTicketMax の値よりも多くのチケットが含まれていることがあります。これは、アドバイザリ ロックのために可能であるようには見えません。少量 (またはロックを取得した後に pg_sleep などの手動で導入された遅延) でテストすると、期待どおりに動作します。
私の環境設定は次のとおりです。
- Django 1.8.1 (django.db.backends.postgresql_psycopg2 w/ CONN_MAX_AGE 300)
- PGBouncer 1.7.2 (セッションモード)
- Amazon RDS の Postgres 9.3.10
チューニングを試みた追加の変数:
- CONN_MAX_AGE を 0 に設定する
- pgbouncer を削除して DB に直接接続する
私のテストでは、イベントが売れ過ぎた場合、チケットは別の Web サーバーから購入されたので、共有セッションについて面白いビジネスはないと思いますが、確かなことは言えません.