[pgsql-jp: 37842] Re: kind mismatch between backends
Hisakazu Nakai
nakai @ shinko.co.jp
2006年 12月 22日 (金) 17:02:33 JST
中井です。
お世話になります。
# とても光栄です。
Tatsuo Ishii wrote:
> 石井です.
>
>> 中井です。
>>
>> ありがとうございます。
>
> どういたしまして.
>
>> Tatsuo Ishii wrote:
>> > とりあえずエラーが発生したときのpgpoolのエラーログを見せていただけます
>> > か? また,同じテーブルに関する他の種類のSELECT文ではエラーは出ないの
>> > でしょうか?
>>
>> 必ずエラーが出るわけではないです。
>>
>> 2006-12-22 08:31:00 LOG: pid 22580: statement: show pool_status
>> ;
>> 2006-12-22 08:31:01 LOG: pid 22930: statement: RESET ALL
>> 2006-12-22 08:31:01 LOG: pid 22930: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:31:01 LOG: pid 22930: statement: DEALLOCATE "S_1"
>> 2006-12-22 08:31:01 LOG: pid 22930: statement: DEALLOCATE "S_2"
>> 2006-12-22 08:31:14 LOG: pid 22930: statement: RESET ALL
>> 2006-12-22 08:31:14 LOG: pid 22930: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:31:14 LOG: pid 22930: statement: DEALLOCATE "S_1"
>> 2006-12-22 08:31:14 LOG: pid 22930: statement: DEALLOCATE "S_2"
>> 2006-12-22 08:31:22 LOG: pid 22930: statement: RESET ALL
>> 2006-12-22 08:31:22 LOG: pid 22930: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:31:22 LOG: pid 22930: statement: DEALLOCATE "S_1"
>> 2006-12-22 08:31:22 LOG: pid 22930: statement: DEALLOCATE "S_2"
>> 2006-12-22 08:31:39 LOG: pid 22580: statement: RESET ALL
>> 2006-12-22 08:31:39 LOG: pid 22580: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:32:12 ERROR: pid 22580: read_kind: kind does not match
>> between backends master(82) secondary(69)
>> 2006-12-22 08:32:46 LOG: pid 22580: statement: select * from workflow
>> 2006-12-22 08:33:14 LOG: pid 22580: statement: RESET ALL
>> 2006-12-22 08:33:14 LOG: pid 22580: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:33:36 LOG: pid 22580: statement: select * from workflow
>> 2006-12-22 08:33:36 LOG: pid 22580: statement: RESET ALL
>> 2006-12-22 08:33:36 LOG: pid 22580: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:34:18 LOG: pid 22930: statement: select * from workflow
>> 2006-12-22 08:35:46 ERROR: pid 22930: ProcessFrontendResponse: failed to
>> read kind from frontend. fronend abnormally exited
>> 2006-12-22 08:35:46 LOG: pid 22930: do_child: exits with status 1 due
>> to error
>> 2006-12-22 08:37:00 LOG: pid 22580: statement: RESET ALL
>> 2006-12-22 08:37:00 LOG: pid 22580: statement: SET SESSION
>> AUTHORIZATION DEFAULT
>> 2006-12-22 08:37:00 LOG: pid 22580: statement: DEALLOCATE "S_1"
>> 2006-12-22 08:37:00 LOG: pid 22580: statement: DEALLOCATE "S_2"
>> 2006-12-22 08:39:02 ERROR: pid 22580: pool_check_fd: data is not ready
>> tp->tv_sec 5 tp->tp_usec 5000000
>> 2006-12-22 08:39:02 ERROR: pid 22580: pool_process_query: secondary data
>> is not ready at synchronous point. abort this session
>> 2006-12-22 08:39:02 ERROR: pid 22580: pool_process_query: kind does not
>> match between backends master(E) secondary( (~'@)
>> 2006-12-22 08:39:02 ERROR: pid 22580: health check failed during write.
>> master at port 9999 is down
>> 2006-12-22 08:39:02 LOG: pid 22580: notice_backend_error: master: 1
>> fail over request from pid 22580
>> 2006-12-22 08:39:02 LOG: pid 12091: starting degeneration. shutdown
>> master host (9999)
>> 2006-12-22 08:39:02 LOG: pid 12091: degeneration done. shutdown master
>> host (9999)
>>
>> pid 22580 は、ssh で入って psql でデータベースを検査していた
>> ところです。show pool_status; の結果は正常でした。
>> 動作チェックで select * を行う前に、最初のエラーメッセージが
>> 出ています。でも画面(psql)では、エラーがでませんでした。
>
> これですね.
>
>> 2006-12-22 08:32:12 ERROR: pid 22580: read_kind: kind does not match
>> between backends master(82) secondary(69)
>
> 82は"R"で,認証要求のパケットです.なのでたぶんこれは正常.secondaryの
> 69("i")が変ですね.これは"Empty Query Response"で,空のクエリを送った
> ときの応答です.なぜこんなものが返ってくるのか...調べてみます.
show pool_status以外なにもしていないときなんです。
kind does not match で直ちに縮退運転に入るわけではないんですね。
> ところで,
>
>> 2006-12-22 08:37:00 LOG: pid 22580: statement: DEALLOCATE "S_1"
>> 2006-12-22 08:37:00 LOG: pid 22580: statement: DEALLOCATE "S_2"
>
> というのがあります.pid 22580はpsqlで接続しているんですよね?このメッセー
> ジはprepared queryが使われたことを示していますが,実際使ってますか?
使っていません。このメッセージは不定期に頻繁に出ています。
>> 何回かやっているうちにハングしてしまいました。
>
> これですね.
>
>> 2006-12-22 08:39:02 ERROR: pid 22580: pool_process_query: secondary data
>> is not ready at synchronous point. abort this session
>> 2006-12-22 08:39:02 ERROR: pid 22580: pool_process_query: kind does not
>> match between backends master(E) secondary( (~'@)
>
> これは,secondaryから応答が返ってこなくなり,タイムアウトしたことを示
> しています.確認ですが,secondaryのpostmasterをshutdownするとか,そう
> いう操作はされていないですよね?
少なくともsecondaryでは何もしていません。
master側でpsql接続で検査していただけです。
ハングしたので、master側で、一つずつ子供のプロセスから
kill していきました。汗;
>> 従って、この時点では、データベースに異常があったとはわかりません
>> でした。
>> # 変ですね。
>>
>> エラー行 08:39:02 の secondary の kind は化けています。
>> この時点でアプリケーションがエラーを返し、アプリケーションのログに
>> kind does not smatch が残りました。
>> このあとしばらくたってから、エラーメッセージ(08:39:02のもの)メールが
>> 届いて気づきました。縮退運転に入るとメールを飛ばすようにしてあるのです。
>> 08:32:12の時点では、縮退運転に入っていませんでした。
>> # これも変ですね。
>
> これですね.
>
>> 2006-12-22 08:39:02 ERROR: pid 22580: health check failed during write.
>> master at port 9999 is down
>
> pgpoolから見ると,masterのhealth checkに失敗しているように見えます.
> ログだけ見ると,postmasterをshutdownしているように見えるのですが...
ドキッ。ps で Idle になっていた psql は kill しましたが、
postmaster には手をつけていません。今、ps で見ても、postmaster は
生きていますし、PID も pgpool より小さい値だし。(未だ、一周していない)
history で確認しましたが、若い PID しか kill していないです。
master at port 9999 is down というは、socket open できなかったという
ことでしょうか。
「secondaryの応答がないので、health check して master が死んでいるから
master を切り離した。」んですね。ますますわからなくなってきました。
>> 追伸:エラーログファイルはopenしぱなっしなんですね。logrotateしようと
>> しましたが、rotateした最新ファイルは空でした。あせりました。
>
> はい,さすがにログに書きにいくたびにopenしたのでは遅すぎますので.
> HUPシグナルか何かでcloseするようなことを考えてみます.
宜しくお願いします。
HUPシグナルの件は急ぎません。
--
-=-=-=-= SHINKO ELECTRIC INDUSTRIES CO., LTD. =-=-=-=-
=-=-=-=- Research & Development Div. -=-=-=-=
-=-=-=-= Infomation Technology Research Dept. =-=-=-=-
=-=-=-=- Name:Hisakazu Nakai TEL:026-263-3922 -=-=-=-=
-=-=-=-= Mail:nakai @ shinko.co.jp FAX:026-263-4562 =-=-=-=-
pgsql-jp メーリングリストの案内