問題タブ [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.

0 投票する
3 に答える
4687 参照

php - トランザクションモードのPHPとpgbouncer:現在のトランザクションは中止されます

プレーヤー統計用のカスタムPHPスクリプトがいくつかあるフラッシュゲームを埋め込んだDrupal7.2Webサイトを実行しています。CentOS 5.6 / 64ビット、PostgreSQL 8.4.8、およびPHP5.3を使用します。これは、4GBのRAMを搭載したクアッドオプテロンです。

ピーク時(オンラインで約500人のプレーヤーがいるとき)、私のWebサイトはポストマスタープロセスが多すぎてダウンしていました。pgsql-generalメーリングリストのアドバイスに従って、次の/etc/pgbouncer.iniを使用してpgbouncer1.3.4をインストールしました。

そして、postgresql.confでshared_buffers = 1024MBを増やし、max_connections=50を減らしました。

これは役に立ちましたが、準備されたPDOステートメントが見つからないという問題がよくあります。

  • おそらくpgbouncerがprepare()とexecute()の間の接続を切り替えるためです。

pgbouncerをセッションモードに切り替えることができません-私のWebサイトがハングします。

PDO :: ATTR_EMULATE_PREPARES=>trueを追加してみました-私のWebサイトもハングします。

各prepare()およびexecute()呼び出しの周りにbeginTransaction()とcommit()を追加しましたが、次のエラーが頻繁に発生します。

以下は、そのエラーで失敗する私のコードの抜粋です-それは非常に簡単で、5つのSELECTステートメントを呼び出すだけです:

何か助けてください?アレックス

0 投票する
5 に答える
20329 参照

java - Postgres - エラー: 準備済みステートメント "S_1" は既に存在します

JDBC 経由で pgbouncer にバッチ クエリを実行すると、次のエラーが発生します。

Web でバグ レポートを見つけましたが、それらはすべて Postgres 8.3 以下を扱っているようですが、私たちは Postgres 9 を使用しています。

エラーをトリガーするコードは次のとおりです。

これを前に見た人はいますか?

編集1:

これは、セッション プーリング以外のものを使用しているときに発生する pgBouncer の問題であることが判明しました。明らかに準備されたステートメントをサポートできないトランザクションプーリングを使用していました。セッション プーリングに切り替えることで、この問題を回避しました。

残念ながら、これは私たちのユースケースには適した修正ではありません。pgBouncer には 2 つの用途があります。システムの 1 つの部分は、プリペアド ステートメントとして最も効率的な一括更新を行い、別の部分は非常に迅速に連続して多数の接続を必要とします。pgBouncer では、セッション プーリングトランザクション プーリングを切り替えることができないため、ニーズをサポートするためだけに、異なるポートで 2 つの個別のインスタンスを実行する必要があります。

編集2:

私はこのリンクに出くわしました , ポスターは彼自身のパッチを転がしました. 現在、安全で効果的であることが証明された場合、私たち自身の使用のためにそれを実装することを検討しています.

0 投票する
1 に答える
3156 参照

python - psycopg2 + pgbouncer。gevent エラーのある非同期モード

アプリケーションpsycopg2 + pgbouncer + geventがあります。非同期アプリケーション。つまり、1 つのプロセスが複数の要求を処理します。データベースへの非同期アクセスは、psycopg2 の最新バージョン (2.2 ではなく) で登場しました。ただ今回のリリースで、pgbouncer からの切断が多発するバグが導入されました。pgbouncer ログに次のエントリがあります。

汚れたサーバーに関するメッセージを回避するために、pgbouncer を設定する方法はあるのでしょうか? 何かを修正するパッチがあるなど、バグに関する情報。ubuntu リポジトリのすべてのパッケージは、運用マシンにパッチを適用します - 良いオプションではありません。私の設定pgboucner:

0 投票する
1 に答える
1365 参照

django - django は pgbouncer 経由でテスト DB を削除できません

Djangoでpgbouncerを使用しています。test_fooどうやらDjangoはテストDBに別のポートを使用できないため、テストを実行できるようにデータベースを構成に追加しました。これでテストが実行されますが、最後に、Django がテスト DB を削除しようとすると、

これは、pgbouncer によって保存されたオープン接続が原因であると思われます。私に何ができる?

0 投票する
1 に答える
5646 参照

django - pgbouncer - 閉じる理由: すべての接続でサーバーが汚れている

PostgreSQL 9.1/PostGIS 1.5、psycopg2 2.4.2、および pgbouncer 1.4.2 で Django 1.3 を実行しています。

データベースに接続するたびに、pgbouncer.log にログ エントリが記録されます。

2011-11-20 02:15:25.027 29538 LOG S-0x96c2200: app_db/postgres@192.168.171.185:5432 終了理由: 汚れたサーバー (年齢 = 0)。

この問題の解決策が見つかりません。理由がわかる人はいますか? pgbouncer の再構成 (セッション/トランザクション モード、異なるタイムアウトなど) を試みましたが、役に立ちませんでした。

0 投票する
2 に答える
40000 参照

python - pgBouncer は Django の高速化にどのように役立ちますか

gevent に基づく管理コマンドがいくつかあります。私の管理コマンドは何千ものリクエストを作成するので、Gevent を使用してすべてのソケット呼び出しをノンブロッキング呼び出しに変えることができます。これにより、同時にリクエストを行うことができるため、アプリケーションが本当に高速化されます。

現在、私のアプリケーションのボトルネックは Postgres のようです。これは、Django との接続に使用する Psycopg ライブラリが C で記述されており、非同期接続をサポートしていないためと思われます。

また、pgBouncer を使用すると Postgres を 2 倍高速化できることも読みました。これは素晴らしいことのように思えますが、誰かが pgBouncer がどのように機能し、どのように役立つかを説明できれば素晴らしいと思いますか?

ありがとう

0 投票する
1 に答える
443 参照

python - Pythonでデータマッピングレイヤーを作成するための最良のアプローチは何だと思いますか?

いくつかの python オブジェクトと postgres データベースの間に軽量のデータ マッピング レイヤーを作成するための最良のアプローチについて、いくつかの意見を聞いていただければ幸いです。私は psycopg2 ライブラリを使用しており、pgbouncer を使用する予定です。私はこれを見ました:http://codeinthehole.com/writing/domain-model-mapper-a-php-data-mapper-implementation/基本的な考え方についてクエリ。私が構築しているコンポーネントは、使い慣れたユーザー、投稿、フォーラム テーブルなどがあるという点でフォーラムに似ています。

0 投票する
1 に答える
12504 参照

postgresql - pgbouncer でトランザクション プーリングを使用する利点は何ですか?

トランザクション プーリングとセッション プーリングに pgbouncer を使用する利点/欠点の良い要約を見つけるのに苦労しています。

トランザクションの多いワークロードが何らかの形で負荷分散されているということですか? pgbouncer からデータベースに接続するために多くの接続が必要になるのを防ぐためですか?

0 投票する
1 に答える
3162 参照

postgresql - PGBouncer が機能しているかどうかはどうやってわかりますか?

PGBouncer をセットアップし、postgres DB に接続するように構成しましたが、すべて正常に接続されていますが、実際に機能しているかどうかはわかりません。

デーモンとして実行され、beanstalk ジョブを取得する php スクリプトがあります。問題は、システム上の個別のユーザー/アクションごとに、postgres への新しい接続を開き、その接続をアイドル状態のままにすることです。これは、デーモンが実際に実行を停止しないため、接続が終了しないためです (これに対する簡単な修正は、スクリプトループの最後に接続しますが、多くの接続では非効率になります)。

とにかく、これによりpostgresは最終的に接続を使い果たし、ロックアップしました...

したがって、PGBouncer が答えのようです。

しかし、今それを実行すると、ps ax | を実行すると、同じ db 接続が複数回表示されます。ポストグルをgrepします。

PGBouncer は、DB への接続を 1 つだけ開いて、その接続を介してすべてのトラフィックをルーティングすることになっていませんか? 接続が満杯の場合は、新しい接続を開きますか?

現在、1 つのデータベース接続 (アクセス制御システム) に 3 つ、他のデータベース (クライアント固有のデータ) に 2 つ持っています。

私には、これらの変更をロールアウトすると、接続が解放されないために接続が再び食い尽くされるという同じ問題に直面するように感じます.

誰かがアドバイスを提供するのに十分な説明があることを願っています。