2011年12月 5日

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

MauMauさん

ありがとうございます。
勉強になりました。
確認しておきます。

-----Original Message-----
From: pgsql-jp-bounces@xxxxx

[mailto:pgsql-jp-bounces@xxxxx] On Behalf Of MauMau
Sent: Friday, December 02, 2011 10:10 PM
To: PostgreSQL Japanese Mailing List
Subject: [pgsql-jp: 40997] Re: 【質問】"pgstat wait timeout"のメッセージ解消
について

村上さん


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@xxxxx>
To: <pgsql-jp@xxxxx>
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
>
>
>


__________ Information from ESET NOD32 Antivirus, version of virus signature
database 6681 (20111203) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


__________ Information from ESET NOD32 Antivirus, version of virus signature
database 6681 (20111203) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 6681 (20111203) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

投稿者 xml-rpc : 2011年12月 5日 13:03
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/107556
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。