[pgsql-jp: 36438] Re: pgpoolでfail Overするタイミング

森山 和宏 kmoriyama @ htf.highway.ne.jp
2005年 11月 22日 (火) 22:26:04 JST


石井様

moriyamaです

返信ありがとうございました。

> どうやらまたもやVACUUMをCSEから実行されているようですね。あのツールは
> 挙動が不可解だし(なぜか必ずクエリのキャンセルをするし...)、使っている
> libpqのバージョンが古く、更新も止まっているようなので使うのを止めた方
> がいいと思います(問題の切り分けの邪魔になることもあります)。

やはり、もう使用を中止したほうが良さそうですね。
現在 psqledit にツールの変更を考えています。

VACUUM自体はサーバにTELNETでログインして実行しました
その際、現象確認用にCSEで接続してshowコマンドでDBの切断を確認しました。

./pg8x/bin/vacuumdb -p5530 -a -z >/dev/null &

5530 ポートはpgpoolのポートです

>> 2005-11-21 19:13:10 ERROR: pid 31850: pool_process_query: kind does not
>> match between backends master(E) secondary(P)
>
> というエラーは、マスタがE(エラー)を返しているのに、セカンダリは
> P(CursorResponse)を返していることを示しています。もし本当にこれが
> VACUUMを実行した直後の状態だとすると、かなり不可解ですね。VACUUMがEを
> 返すことはありますが、Pを返すことはあり得ません。Pが返るのは検索をし
> たときだけです。VACUUMだけでなく、SELECTか何かを実行しているように見え
> ますが、違いますか?

pgpoolのテストをしながらWebアプリからの動作確認もしていたのでSELECT系
のSQLが実行されている可能性が十分あります。
pgpoolのログを見てみたところpool_process_query: kind from backend: E と
エラーが出ているSQLが大量に出てきました。

SQLの内容から、おそらくCSEでテーブルのプロパティを呼んだ時にエラーを起こしている
気がします。
とりあえずCSEの使用を止めて、他操作時に同様のSQLエラーが発生していないか
確認して見ます。

2005-11-21 19:48:03 DEBUG: pid 32248: read kind from backend pending data C 
len: 8 po: 165
2005-11-21 19:48:03 DEBUG: pid 32248: pool_process_query: kind from backend: 
C
2005-11-21 19:48:03 DEBUG: pid 32248: pool_read_string: read all from 
pending data. po:172 len:1
2005-11-21 19:48:03 DEBUG: pid 32248: Complete Command Response: string: 
"SELECT"
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from backend pending data Z 
len: 0 po: 0
2005-11-21 19:48:03 DEBUG: pid 32248: pool_process_query: kind from backend: 
Z
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from frontend Q(51)
2005-11-21 19:48:03 DEBUG: pid 32248: pool_read_string: read all from 
pending data. po:0 len:0
2005-11-21 19:48:03 DEBUG: pid 32248: Query: SELECT 
s.seq_scan,s.seq_tup_read,s.idx_scan,s.idx_tup_fetch,s.n_tup_ins,s.n_tup_upd,s.n_tup_del,i
o.heap_blks_read,io.heap_blks_hit,io.idx_blks_read,io.idx_blks_hit,io.toast_blks_read,io.toast_blks_hit,io.tidx_blks_read,io.tidx_blks_hit 
,oi
d as InternalOid FROM pg_catalog.pg_class c left join 
pg_catalog.pg_stat_all_tables s on c.oid=s.relid left join 
pg_catalog.pg_statio_all_tabl
es io on c.oid=io.relid WHERE pg_catalog.pg_table_is_visible(c.oid) AND 
c.relname ='corp_session'
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from backend E
2005-11-21 19:48:03 DEBUG: pid 32248: pool_process_query: kind from backend: 
E
2005-11-21 19:48:03 DEBUG: pid 32248: pool_read_string: read all from 
pending data. po:0 len:0
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from backend Z
2005-11-21 19:48:03 DEBUG: pid 32248: pool_process_query: kind from backend: 
Z
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from frontend Q(51)
2005-11-21 19:48:03 DEBUG: pid 32248: pool_read_string: read all from 
pending data. po:0 len:0
2005-11-21 19:48:03 DEBUG: pid 32248: Query: SELECT 
s.seq_scan,s.seq_tup_read,s.idx_scan,s.idx_tup_fetch,s.n_tup_ins,s.n_tup_upd,s.n_tup_del,i
o.heap_blks_read,io.heap_blks_hit,io.idx_blks_read,io.idx_blks_hit,io.toast_blks_read,io.toast_blks_hit,io.tidx_blks_read,io.tidx_blks_hit 
FRO
M pg_catalog.pg_class c left join pg_catalog.pg_stat_all_tables s on 
c.oid=s.relid left join pg_catalog.pg_statio_all_tables io on c.oid=io.re
lid WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relname 
='corp_session'
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from backend P
2005-11-21 19:48:03 DEBUG: pid 32248: pool_process_query: kind from backend: 
P
2005-11-21 19:48:03 DEBUG: pid 32248: pool_read_string: read all from 
pending data. po:6 len:411
2005-11-21 19:48:03 DEBUG: pid 32248: read kind from backend pending data T 
len: 410 po: 7





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