[pgsql-jp: 40997] Re: 【質問】"pgstat wait timeout"のメッセージ解消について

MauMau maumau307 @ gmail.com
2011年 12月 2日 (金) 22:09:34 JST


村上さん


MauMauといいます。

1については、統計情報ビューのpg_stat_databaseでいかがでしょうか。
データベースごとの接続数やトランザクション数がわかります。

http://www.postgresql.jp/document/pg830doc/html/monitoring-stats.html

[抜粋]
pg_stat_database データベース当たり1行の形で、データベースのOID、データベース名、そのデータベースに接続する活動中のサーバプロセス数、そのデータベース中でコミットされたトランザクションの総数、ロールバックされたトランザクションの総数、読み取られたディスクブロックの総数、バッファヒット(つまり、バッファキャッシュに対象とするブロックが存在するために防止されたブロック読み取り要求)の総数、挿入・更新・削除により返された行数を表示します。


2については、max_connectionsによる制限に達したときの
接続失敗はデフォルトでログに記録されます。
次のエラーメッセージが該当します。

sorry, too many clients already


4については、接続の確立に時間がかかりすぎたかどうかは直接には確認できません。 

\lがタイムアウトしているということですと、
\lの実処理である"SELECT * FROM pg_database"がタイムアウトしていることになります。


多数の接続上で同時に多くの処理が実行されており、
それらの多くに想定より時間がかかったりタイムアウトしているのであれば、
サーバの負荷が大きいのではないでしょうか。
OSの機能でCPU使用率やメモリの空き量、スワップ領域のI/O、
データベースを格納したディスクのI/Oを確認されたほうがよいと思います。

以上です。

----- Original Message ----- 
From: "m.murakami" <m.murakami @ lightcafe.co.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Friday, December 02, 2011 1:55 PM
Subject: [pgsql-jp: 40994] Re:【質問】"pgstat wait timeout"のメッセージ解消について


> 村上と申します。よろしくお願い致します。
>
> 以下長文での確認となりますが、ご容赦願います。
>
> PostgreSQLバージョン:8.3.5を使用中
>
> PostgreSQLのDB同時接続に関して質問があります。
>
> 1分間に1度接続のみのコマンドを発行し、DBが停止していないかなどを確認しており 
> 
> ます。
> ここ数日1分間のうちに、SQLのselect文が大量に実施されており、その間
> DB接続確認処理がエラー(タイムアウト50秒)する場合があります。
>
> 実際にその時間帯に接続していた処理数がどの程度あったかを
> 確認したいと思っており、以下のようなコマンドがございますが、
> こちらは実行したタイミング(現時点)のものと認識しております。
> 「select count(*) from pg_stat_activity;」
>
> ちなみにMAXコネクションを500で設定しております。
> Postgresqlのログにて3秒以上実行時間がかかったものを
> ログに出力していますが、1分間に400〜600以上のSQLが
> 実行されているときにDB接続確認処理のエラーが発生します。
>  ※ログを確認したところ、大量に実施されている処理は、
>   3〜40秒実行時間が記録されております。
>
> 1.過去の時間帯にどの程度の処理が実施されていたかを
>   確認する(pg_stat_***)ものがございますでしょうか?
>
> 2.MAXコネクション数が足りないor接続確認はできているが応答が返しきれていな 
> 
> いのかを
>   切り分けたいとも思っています。
>   コネクション数が不足した際、接続エラーになった際はログに
>   なんらかのエラーが出力されると思いますが、それらしきエラーは
>   残念ながらみあたりませんでした。
>   コネクションエラーに関するログはデフォルトで出力されるという認識であって 
> 
> いますか?
>
> 3.DB接続確認時はDBの管理者ユーザ権限にて接続しています。
>   MySQLだったかもしれませんが、管理者ユーザでの接続は
>   Maxコネクション数に達していても、接続できるな記憶があります。
>   PostgreSQLでも管理者ユーザならMaxコネクション数に達していても
>   接続はできるなどございますでしょうか?
>   (接続確認処理のみで50秒以上かかるのも考えづらい気がしております
> が。。。)
>
> 4.接続に時間がかかっているだけなど確認する方法があればご教示ねがいます。
>
>
> 以上、よろしくお願い致します。
>
>
> __________ Information from ESET NOD32 Antivirus, version of virus 
> signature
> database 6674 (20111201) __________
>
> The message was checked by ESET NOD32 Antivirus.
>
> http://www.eset.com
>
>
> 



pgsql-jp メーリングリストの案内