[pgsql-jp: 37857] Re: kind mismatch between backends

ISHIDA Akio iakio @ mono-space.net
2006年 12月 26日 (火) 11:43:45 JST


こんにちは。石田@苫小牧市です。

06/12/26 に Hisakazu Nakai<nakai @ shinko.co.jp> さんは書きました:
> 中井です。
(中略)
>
>  <* * * * * prepared statement について * * * * *>
> >>> > >> 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が使われたことを示していますが,実際使ってますか?
> >> >
> >> > 使っていません。このメッセージは不定期に頻繁に出ています。
>
> > 確認ですが,psql以外から接続するときには,このシステムではJavaから接続
> > するなどして,prepared queryを使うこともあるのでしょうか?
>
> プロセスIDからするとコンソールからpsqlで接続しているときのことなので、
> ありえないような気がします。psqlでセッションを張っている最中に、
> その pgpool が他のクライアントとセッションを張るということは
> ないですよね。

deallocは、新たな接続要求に対して、既存の接続を再利用する
時に実行するので、ありえると思います。

Java等からprepared queryを実行し、その接続を切断した後、
psqlからの接続要求があったので、pgpoolからPostgreSQL間の
接続をリセットした、ということだと思います。

それよりちょっと気になったのは、
replication_timeout = 5000
で、

2006-12-22 08:39:02 ERROR: pid 22580: pool_check_fd: data is not ready
tp->tv_sec 5 tp->tp_usec 5000000

という、tp->tp_usecの値がおかしいのですが、
これはnotimeoutが渡されてtimeoutが初期化されていなかった
ということでしょうかね。

だとしたら、タイムアウトがNULLでselectが0を返すことって
あるんでしょうか。

-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>



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