[pgsql-jp: 40188] Re: update文のフリーズ

Fujii Masao masao.fujii @ gmail.com
2010年 2月 17日 (水) 17:56:38 JST


2010/2/17 Eiichiro Sakai <sakai @ agate-japan.com>:
>> ちなみに、ps aux の結果からもロック待ちが発生していたか確認できるのです
> が、
>> 事象発生時の ps の結果はお持ちでしょうか? ロック待ちのプロセスは、ps では
>> "SELECT waiting" や "UPDATE waiting" と表示されます。
>
> すいません、psの結果は残っておりませんでした・・。

となると、UPDATE 文がフリーズした原因を特定するのは難しいかもしれません。

>> ログを見るとSQL文を実行される際、最後のupdate文で「parse」「bind」が出力され
>> ていて、
>> 「execute」が出力されていない状況です。
>> 「bind」と「execute」の間はpostgres内部の処理と認識していたので、
>> SQLの実行メッセージは届いていると認識しておりました。

おそらく pgpool は "bind" と "execute" を別々のメッセージとして PostgreSQL に
送信しているはずです。pgpool のソースを斜め読みした限りだと、"bind" 処理の完了を
示すメッセージが PostgreSQL が返ってくるまで pgpool は "execute" のメッセージを
PostgreSQL に送信しません。やはり "execute" のメッセージが PostgreSQL に届いて
いない可能性も考えられます。

もし pgpool をデバッグモード (-d オプション付) で起動していれば、どのメッセージを
pgpool が送信したかログに出力されます。そのログから、"execute" メッセージが
PostgreSQL に送信されたかご確認ください。

-- 
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center


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