[pgsql-jp: 37861] Re: kind mismatch between backends
Hisakazu Nakai
nakai @ shinko.co.jp
2006年 12月 26日 (火) 13:33:00 JST
中井です。
ご参加ありがとうございます :-)
ISHIDA Akio wrote:
> こんにちは。石田@苫小牧市です。
>
> 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間の
> 接続をリセットした、ということだと思います。
psqlが走っている間は、pgpoolとセッションを開きっぱなしで、
クライアント側とセッションが開きっぱなしのpgpoolプロセスは、
他のクライアントとセッションを張りなおすことが無いと
思っていました。
> それよりちょっと気になったのは、
> 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を返すことって
> あるんでしょうか。
>
> selectがtimeoutの値を更新するんですね。
> だとしたらこの時点でnotimeoutは0だったということですね。
replication_strict = true なので、デッドロックは監視して
いないかと思うのですが、そうするとこのエラーは何か意味が
出てくるのでしょうか。
--
-=-=-=-= 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 メーリングリストの案内