[pgsql-jp: 34158] Re: pgpoolのリードエラーについて
Tatsuo Ishii
t-ishii @ sra.co.jp
2004年 10月 26日 (火) 15:45:26 JST
石井です.
> Red Hat Linux release 7.3
> postgres (PostgreSQL) 7.4.3
> pgpool version 2.2
>
> これらのバージョンでセカンダリのcheck_fdがエラーになります。
> 主にJDBC+JAVA,PG-AdminIII,psql,DBI+Perl,ODBC+MsAccessなどで発生します。
>
> またDBI+Perlでエラー発生率が高くpsqlは低いです、Perlの十分の一ほどです。
> さらに、読むデータによって頻度も変わります。データの違いはほぼ件数のみで
> す。
> pgpool.conf内容(テスト用に接続を少なくしていますが多数でも発生していま
> す)
> ------------
> num_init_children =2
> max_pool = 1
> child_life_time = 0
> connection_life_time = 0
> replication_mode = true
> replication_strict = 両パターンでテスト
> replication_timeout = *3パターンでテスト
> load_balance_mode = *true false ともに変化無し
> weight_master=1-0
> weight_secondary=0-1 weightがそれぞれ1-0,0-1も変化無し
> replication_stop_on_mismatch = false
replication_strict = trueかつ
replication_timeout = 0 だとどうなるでしょうか?
それから,
> ERROR: pid 3254: pool_check_fd: data is not ready tp->tv_sec 0
> tp->tp_usec 0
このメッセージが出たときのタイミングを教えてください.要は,tp->tv_sec
0かつtp->tp_usec 0になるのはおかしいので,どういうときにこうなるのか知
りたいのです.
> ---pool_check_fd: data is not ready が発生しない率
一応確認ですが,100 = 正常,100以外はNGっていう理解で合っていますか?
--
Tatsuo Ishii
> replication_timeout 1 の成功率(%)
> SQL文 replication_strict
> true false
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='13' 100 43
> /*STRICT*/ SELECT * ... WHERE id='13' 0 56
> SELECT COUNT(*) ... WHERE id='13' 100 51
> SELECT * ... WHERE id='13' 0 56
>
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='14' 100 52
> /*STRICT*/ SELECT * ... WHERE id='14' 100 35
> SELECT COUNT(*) ... WHERE id='14' 100 55
> SELECT * ... WHERE id='14' 100 23
>
> replication_timeout 5000 の成功率(%)
> true false
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='13' 100 100
> /*STRICT*/ SELECT * ... WHERE id='13' 0 89
> SELECT COUNT(*) ... WHERE id='13' 100 100
> SELECT * ... WHERE id='13' 0 78
>
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='14' 100 100
> /*STRICT*/ SELECT * ... WHERE id='14' 100 86
> SELECT COUNT(*) ... WHERE id='14' 100 100
> SELECT * ... WHERE id='14' 100 72
>
> eplication_timeout 15000 の成功率(%)
> true false
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='13' 100 100
> /*STRICT*/ SELECT * ... WHERE id='13' 0 87
> SELECT COUNT(*) ... WHERE id='13' 100 100
> SELECT * ... WHERE id='13' 0 77
>
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='14' 100 100
> /*STRICT*/ SELECT * ... WHERE id='14' 100 85
> SELECT COUNT(*) ... WHERE id='14' 100 100
> SELECT * ... WHERE id='14' 100 75
>
>
> その後逆の環境でサーバAでinitdb後テストしてみました
> strict=true の時の値が変化しています。
> 数値の低下はサーバの性能でしょうか・・
>
> サーバB サーバA
> -------postgres1
> pgpool-l
> -------postgres2
>
> replication_timeout 5000 の成功率(%)
> true false
> /*STRICT*/ SELECT COUNT(*) ... WHERE id='13' 100 100
> /*STRICT*/ SELECT * ... WHERE id='13' 35 75
> SELECT COUNT(*) ... WHERE id='13' 100 100
> SELECT * ... WHERE id='13' 48 61
>
pgsql-jp メーリングリストの案内