[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 メーリングリストの案内