[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 メーリングリストの案内