[pgpool-general-jp: 944] Re: pgpoolでクライアント切断時にトランザクションが継続することにつきまして

飯原 裕司 yuji.iihara @ softinc.co.jp
2011年 5月 6日 (金) 19:16:54 JST


ご質問いたしました。飯原です。
ありがとうございます。

早速確認してみます。

Tatsuo Ishii wrote:

> 石井です。
> 
> > 現在、レプリケーションのためにpgpool-IIを使用しております。
> > 構成は
> > PostgreSQL 8.4.4 2台
> > うち、1台に
> > pgpool-II 2.3.3
> > を入れております。
> > 
> > 1.トランザクションを開始
> > 2.INSERT, UPDATE, DELETEなどのSQLを発行
> > 3.何らかのエラーでクライアント側の接続が中断
> > 4.テーブルロックもしくは行ロックがかかったままになる。
> > 
> > という問題で困っております。
> > コネクションプールがPostgreSQL本体との接続を維持しているために、
> > そのようになっているのではないかと考えております。
> > もともとレプリケーションを目的としてpgpoolを使用しておりますので、
> > コネクションプールは必要ありません。
> > クライアントとの接続が切れれば、pgpoolの子プロセスが張っている
> > PostgreSQL本体との接続が切れるようにしたいのですが、
> > そのような設定は可能でしょうか?
> 
> そのような設定はありませんが、pgpoolがクライアントとのコネクションを切
> られたことを検知すれば、PostgreSQLに reset_query_listに書かれたクエリを
> 送信します。このリストには、"ABORT"を含むことを推奨しており、ABORTが送
> られればトランザクションがアボートするので、ロックを取ったままにならな
> いはずです。
> 
> 逆に、pgpoolがクライアントへの接続が終了したことを検知できない状況では、
> 仮にPostgreSQLに直接クライアントがつながっていたとしても、PostgreSQLの
> 方でもやはり検知できないので、PostgreSQLのバックエンドプロセスが残り、
> ロックを取ったままになってしまうと思います。
> 
> > それともpgpoolが元々コネクションプールのツールであることから、
> > レプリケーションモードでもコネクションプールは切り離せないのでしょうか?
> 
> connection_cache = false
> 
> にすればコネクションプールはきかなくなります。
> --
> Tatsuo Ishii
> SRA OSS, Inc. Japan
> English: http://www.sraoss.co.jp/index_en.php
> Japanese: http://www.sraoss.co.jp
> 
> > お知恵を拝借いたしたく、よろしくお願いいたします。
> > 
> > --
> > /*
> >   有限会社ソフトインク
> >   飯原 裕司
> >   yuji.iihara @ softinc.co.jp
> > */
> > _______________________________________________
> > pgpool-general-jp mailing list
> > pgpool-general-jp @ sraoss.jp
> > http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
> 
> 
> 
> 
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 10.0.1325 / Virus Database: 1500/3619 - Release Date: 05/06/11
> 

--
/*
  有限会社ソフトインク
  飯原 裕司
  yuji.iihara @ softinc.co.jp
*/


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