pg_activityで「トランザクション分離レベルの表示」を使用して複数のクエリを取得する


10

PostgreSQLサーバーを運用環境で使用しています。

次のようなクエリを実行すると

select * from pg_stat_activity

私のサーバーでは、次のようなクエリの98%を取得しています

SHOW TRANSACTION ISOLATION LEVEL

サーバーは100接続しか受け入れないため、先に進むことができません。

なんでこんなことが起こっているの?これらのクエリをすべてブロックするにはどうすればよいですか?


4
Postgresは独自に接続を作成しません。これらの接続を作成し、それらのクエリを実行するのはアプリケーションです。おそらく接続プールまたは同様のもの。
a_horse_with_no_name 2013

2
Javaアプリケーションを実行していますか?HikariCP、またはおそらく別の接続プーリングオプションを使用していますか?私はHikariCPを使用しpsqlていますが、ログインして実行すると、同様のことが表示されますselect query from pg_stat_activity;。また、なぜこれが発生しているのかも疑問に思いました。私の推測では、これはHikariCPが接続を「新鮮」に保つメカニズムです。
クリスW.

回答:


2

彼らがそこにいるなら; 彼らはそこにいますが、魔法のように薄い空気から飛び出すことはありませんでした。私があなたに戻って彼らがあなたの場合何であったかを私たちに話して欲しいと思いますが、それは通常二つのうちの一つです、

  1. 接続プーリング
  2. ORMまたはSQLの抽象化

時々、これらの人は接続して空のトランザクションを開始したり、トランザクションを準備したりします。それは常に悪いライブラリの結果です。ライブラリが新しいか、データベースにとって新しいかは、言い訳になりません。ライブラリが古く、これを行っている場合、私は彼らがそれにあまり目を向けていないのではないかと疑い、代替案を検討します。

コメントから、

Postgresは独自に接続を作成しません。これらの接続を作成し、それらのクエリを実行するのはアプリケーションです。おそらく接続プールまたは同様のもの。– a_horse_with_no_name 2013年9月10日9:03

Javaアプリケーションを実行していますか?HikariCP、またはおそらく別の接続プーリングオプションを使用していますか?私はHikariCPを使用していて、psqlにログインしてpg_stat_activityから選択クエリを実行すると、同様のことが表示されます。私の推測では、これはHikariCPが接続を「新鮮」に保つメカニズムです。–クリスW. Jan 16 '16 19:22

接続を「新鮮」に保つ試みは可能ですが、それを行うためのコーシャの方法は次のようなものです

result = PQexec(imp_dbh->conn, "/* DBD::Pg ping test v3.6.0 */");

代わりに、その方法を使用するためにバグレポートを提出することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.