[pgcluster: 498] pq_recvbuf: unexpected EOF on client connection につきまして

Yusuke Ito y-110 @ yumemi.co.jp
2004年 8月 13日 (金) 00:34:40 JST


お世話になっております。
伊藤と申します。

度々の投稿で恐縮ですが、pq_recvbuf の挙動に関して気になる点が
ありますのでご報告します。

【サーバ構成】
 レプリケーションサーバ(R1)	1台
 クラスタサーバ	(C1,C2,C3,C4)	4台
 PGCluster	1.0.7av14

 サーバは全て Debian GNU 3.0 です。

【現象】
あるタイミングで発生した、pq_recvbuf のエラーが無限ループに陥っているようです。

sudo -u postgres /usr/local/bin/postmaster -D /home/db -i 2>&1 \
| multilog s10240000 n50 /var/log/pgsql &

postmaster を上記のように起動し、multilog にてログを取ってるのですが、
何らかがトリガとなって、一旦下記の pq_recvbuf エラーが発生すると、
同じログがものすごい勢いで出力されます。
# 何がトリガとなって pq_recvbuf エラーが発生するのかは分かっていません...

2004-08-12 21:15:04 [24989]  LOG:  pq_recvbuf: unexpected EOF on client connection
2004-08-12 21:15:04 [24989]  LOG:  pq_recvbuf: unexpected EOF on client connection
2004-08-12 21:15:04 [24989]  LOG:  pq_recvbuf: unexpected EOF on client connection
...(延々と続く)

放って置くと、他の pid の postmaster も pq_recvbuf のエラーを出力し、
同様のログを延々と吐き続けます。

一旦この現象が発生しますと、クラスタサーバのロードが極端に跳ね上がり、
最終的に一旦落としてリカバリをするしかなくなってしまいます。


どの部分で無限ループに陥っているのか、実際にソースを読んでみたのですが、
pq_recvbuf が EOF を返した際に、

backend/storage/lmgr/lock.c 454-716 

の部分のループから抜け出せず、PGR_Notice_Conflict 内でひたすら 
pq_recvbuf エラーを吐いているような印象を受けます。
# 全然見当違いだったらすみません...

454: Retry_LockAcquire:;
     ...
	PGR_Notice_Conflict();
     ...
716: goto Retry_LockAcquire;


お忙しいところお手数ですが、ご確認いただけませんでしょうか。
よろしくお願い致します。

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Yusuke Ito <y-110 @ yumemi.co.jp>




pgcluster メーリングリストの案内