[Pgpool-general] About failed to use PGPool-II

HinYinLam hinyinanobii at gmail.com
Sun Aug 12 16:18:58 UTC 2007


[Sorry about that previous message has been mis-post using HTML]
Hi All,
I tried to setup two servers with PGPool-II with both replication and
load balance on.
I have installed the pgpool-II on the first machine. The first
machine(machine 0) is faster so I give more weight to it.
I started pgpool and it succeed in distributing load on two servers, the
second server(machine 1) get fewer db connections.
However, after running about 10-20 minutes, the pgpool-ii started to
send all connection to the second server.
I can sure that the first server's postgresql is running and all of the
db connection are "idle", the second server just receive all sql
including insert, update, modify, commit etc..

Something I can sure:
1. i did shutdown postgresql gracefully and do a full rsync between two
machines
2. both machine are up and run and no program accessing them before
pgpool start
3. I did not fee the system_db.sql into my database <-is this one the
problem?
4.grep the log and find nothings about "kind x mismatch with kind y" or
"degrade" things. (using only pgpool -n > /var/log/pgpool 2>&1 &)

Can anyone tell me what's happening? thx!


below is my configuration
#
# pgpool-II configuration file sample
# $Header: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample,v 1.4 2007/05/17
06:46:02 yamaguti Exp $

# Host name or IP address to listen on: '*' for all, '' for no TCP/IP
# connections
#listen_addresses = 'localhost'
listen_addresses = '*'

# Port number for pgpool
#port = 9999
port = 5432

# Port number for pgpool communication manager
pcp_port = 9898

# Unix domain socket path. (The Debian package defaults to
# /var/run/postgresql.)
socket_dir = '/tmp'

# Unix domain socket path for pgpool communication manager.
# (Debian package defaults to /var/run/postgresql)
pcp_socket_dir = '/tmp'

# Unix domain socket path for the backend. Debian package defaults to
/var/run/postgresql!
backend_socket_dir = '/tmp'

# pgpool communication manager timeout. 0 means no timeout, but strongly
not recommended!
pcp_timeout = 10

# number of pre-forked child process
num_init_children = 40

# Number of connection pools allowed for a child process
max_pool = 10

# If idle for this many seconds, child exits. 0 means no timeout.
child_life_time = 0

# If idle for this many seconds, connection to PostgreSQL closes.
# 0 means no timeout.
connection_life_time = 60

# If child_max_connections connections were received, child exits.
# 0 means no exit.
child_max_connections = 0

# Logging directory
logdir = '/var/log'

# Replication mode
replication_mode = true

# Set this to true if you want to avoid deadlock situations when
# replication is enabled. There will, however, be a noticable performance
# degradation. A workaround is to set this to false and insert a /*STRICT*/
# comment at the beginning of the SQL command.
replication_strict = true

# When replication_strict is set to false, there will be a chance for
# deadlocks. Set this to nonzero (in milliseconds) to detect this
# situation and resolve the deadlock by aborting current session.
replication_timeout = 5000

# Load balancing mode, i.e., all SELECTs except in a transaction block
# are load balanced. This is ignored if replication_mode is false.
load_balance_mode = true

# if there's a data mismatch between master and secondary
# start degeneration to stop replication mode
replication_stop_on_mismatch = true

# Semicolon separated list of queries to be issued at the end of a session
reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'

# If true print timestamp on each log line.
print_timestamp = true

# If true, operate in master/slave mode.
master_slave_mode = false

# If true, cache connection pool.
connection_cache = false

# Health check timeout. 0 means no timeout.
health_check_timeout = 20

# Health check period. 0 means no health check.
health_check_period = 0

# Health check user
health_check_user = 'nobody'

# If true, automatically lock table with INSERT statements to keep SERIAL
# data consistency. An /*INSERT LOCK*/ comment has the same effect. A
# /NO INSERT LOCK*/ comment disables the effect.
insert_lock = true

# If true, ignore leading white spaces of each query while pgpool judges
# whether the query is a SELECT so that it can be load balanced. This
# is useful for certain APIs such as DBI/DBD which is known to adding an
# extra leading white space.
ignore_leading_white_space = true

# If true, print all statements to the log. Like the log_statement option
# to PostgreSQL, this allows for observing queries without engaging in full
# debugging.
log_statement = false

# If true, incoming connections will be printed to the log.
log_connections = true

# If true, hostname will be shown in ps status. Also shown in
# connection log if log_connections = true.
# Be warned that this feature will add overhead to look up hostname.
log_hostname = false

# if non 0, run in parallel query mode
parallel_mode = false

# if non 0, use query cache
enable_query_cache = false

#set pgpool2 hostname
pgpool2_hostname = 'db.mydomainname.com'

# system DB info
system_db_hostname = 'localhost'
system_db_port = 5433
system_db_dbname = 'pgpool'
system_db_schema = 'pgpool_catalog'
system_db_user = 'pgpool'
system_db_password = ''

# backend_hostname, backend_port, backend_weight
# here are examples
backend_hostname0 = 'db1'
backend_port0 = 5433
backend_weight0 = 6

backend_hostname1 = 'db2'
backend_port1 = 5433
backend_weight1 = 1

/***I tried the following backend_config also! but has the same result
backend_hostname0 = 'db2'
backend_port0 = 5433
backend_weight0 = 1

backend_hostname1 = 'db1'
backend_port1 = 5433
backend_weight1 = 6

***/

# - HBA -

# If true, use pool_hba.conf for client authentication. In pgpool-II
# 1.1, the default value is false. The default value will be true in
# 1.2.
enable_pool_hba = false



More information about the Pgpool-general mailing list