[Pgpool-general] Connection made to both slave and master on SELECT, we expect only one connection (parallel_mode=fal
Mark F
enigma_3319 at hotmail.com
Fri Feb 22 22:53:12 UTC 2008
Hello,
We are having a problem with pgpool-II version 1.1.1(amiboshi),. We set up PGPool to load balance all requests between slave and master database. We verified the load balance is working by creating a table called 'LARRY'. On server1 we inserted a value of 50. On server2 we inserted a value of 100. When we perform a test of ten 'SELECT * from LARRY' queries, we receive:
50
100
50
50
100
100
50
50
100
100
This is good, but we want to know why each request through PGPool is establishing a connection to both servers on each query. We are not replicating select statements and have made all recommended changes to use a PGPool setup for load balance only. Can someone please show us why PGPool is creating a connection on each database server for each query? We were expecting 1 connection from PGPool to either of our database servers:
Unexpected Behavior:
/ Connection Established to Server1
SELECT Statement --> PGPool --
\ Connection Established to Server2
Expected Behavior:
SELECT Statement --> PGPool -- Connection Established to Server2 OR Server1. Not both
Below is our current configuration file. Any help is appreciated.
Thanks
# pgpool-II configuration file sample
# $Header: /cvsroot/pgpool/pgpool-II/pgpool.conf.sample,v 1.15 2007/10/31 10:45:52 y-asaba Exp $
# Host name or IP address to listen on: '*' for all, '' for no TCP/IP
# connections
listen_addresses = '*'
# Port number for pgpool
port = 9999
# 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 = 1000
# Number of connection pools allowed for a child process
max_pool = 100
# If idle for this many seconds, child exits. 0 means no timeout.
child_life_time = 60
# 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
# If client_idle_limit is n (n > 0), the client is forced to be
# disconnected whenever after n seconds idle (even inside an explicit
# transactions!)
# 0 means no disconnect.
client_idle_limit = 0
# Maximum time in seconds to complete client authentication.
# 0 means no timeout.
authentication_timeout = 60
# Logging directory
logdir = '/tmp'
# Replication mode
replication_mode = false
# 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 = false
# If true, replicate SELECT statement when load balancing is disabled.
# If false, it is only sent to the master node.
replicate_select = false
# 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 = true
# 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'
# Execute command by failover.
# special values: %d = node id
# %h = host name
# %p = port number
# %D = database cluster path
# %% = '%' character
#
failover_command = ''
# Execute command by failback.
# special values: %d = node id
# %h = host name
# %p = port number
# %D = database cluster path
# %% = '%' character
#
failback_command = ''
# 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 = false
# 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 = false
# 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 = ''
# backend_hostname, backend_port, backend_weight
# here are examples
backend_hostname0 = 'server1'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/tmp/data'
backend_hostname1 = 'server2'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/tmp/data1'
# - 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
# - online recovery -
# online recovery user
recovery_user = 'nobody'
# online recovery password
recovery_password = ''
# execute a command in first stage.
recovery_1st_stage_command = ''
# execute a command in second stage.
recovery_2nd_stage_command = ''
_________________________________________________________________
Helping your favorite cause is as easy as instant messaging. You IM, we give.
http://im.live.com/Messenger/IM/Home/?source=text_hotmail_join
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://pgfoundry.org/pipermail/pgpool-general/attachments/20080222/ff350a4b/attachment.html
More information about the Pgpool-general
mailing list