2012-03-01 8 views
0

私は毎回アクセスされる3つのテーブルを持っています。私のPHP Webページは中間のC言語ベースのレイヤーにリクエストを送信し、そのレイヤーは呼び出しをpostgresqlに転送します。しかし、単一のタブからブラウズすると、すべてのレコードが適切にフェッチされます。しかし、多くのブラウザ/タブからより多くのリクエストを行うと、少なくとも半分は失敗し、埋め込みドメインとしてはデバッグが本当の問題です。私は、さまざまなブラウザからのデータベース接続が並行して待ち行列に入れられると思っています。誰もこの生産上の問題についてあなたの考えを伝えてください。postgresqlのパフォーマンスは、いくつ接続できますか?

答えて

1

推測しないでください。

PostgreSQLでログの接続と切断を行うことができます。恐らくすでにエラーメッセージが記録されているでしょう。ログを確認します。

この "C"層が何をしているのかわからなくても、それ以上のことは難しいです。あなたは有用な接続プールを見つけるかもしれません。おそらくpgbouncerを見て始めてください。

0

C層からエラーが発生していない場合は、PostgreSQLのログファイルでエラーが発生しているかどうかを確認してください。

a)のC層は、スレッド間で混乱して接続を取得し、一度に同じ接続で二つのことをやっている:

私の最初の推測は、どちらかということでしょう。

またはb)C層で接続が解放されていないため、メモリ制限が発生しています。

いずれにしても、エラーを見つけてから処理を進める必要があります。

PostgreSQL自体は多くの同時接続を処理しますが、各セッションのセットアップ/ティアダウン時間を短縮するために、それらをプールすることをお勧めします。

関連する問題