[pgpool-general: 9289] Why so many TCP descriptors in CLOSE_WAIT state?
Ron Johnson
ronljohnsonjr at gmail.com
Thu Dec 12 07:29:11 JST 2024
pgpool processes occasionally run out of file descriptors (currently set to
1024). In researching that, I noticed some processes have hundreds of
descriptors in CLOSED_WAIT state, and am wondering if that could be the
cause.
PgPool 4.5.4
Postgresql 14.15
PgPool on nodes FISPCDSPGS202a, FISPCDSPGS202b. FISPCDSPGS202c
VIP on node FISPCDSPGS202c
Postgresql on nodes FISPCDSPGS202a, FISPCDSPGS202b.
These commands were run on FISPCDSPGS202c:
$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | wc
796 7960 94752
$ sudo ps -fp1353478
UID PID PPID C STIME TTY TIME CMD
postgres 1353478 1353268 0 02:41 ? 00:00:03 pgpool: fis_cds cdsbmop
10.55.96.146(59522) idle
$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | wc
796 7960 94752
$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | wc
796 7960 94752
$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | head
pgpool 1353478 postgres 12u IPv4 4241106787 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40032 (CLOSE_WAIT)
pgpool 1353478 postgres 13u IPv4 4241106788 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40074 (CLOSE_WAIT)
pgpool 1353478 postgres 14u IPv4 4241106789 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40094 (CLOSE_WAIT)
pgpool 1353478 postgres 17u IPv4 4241106793 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40180 (CLOSE_WAIT)
pgpool 1353478 postgres 18u IPv4 4241106794 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40204 (CLOSE_WAIT)
pgpool 1353478 postgres 20u IPv4 4241106796 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40266 (CLOSE_WAIT)
pgpool 1353478 postgres 21u IPv4 4241106797 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40294 (CLOSE_WAIT)
pgpool 1353478 postgres 22u IPv4 4241106798 0t0 TCP
10.109.165.13:distinct->10.55.96.156:40310 (CLOSE_WAIT)
pgpool 1353478 postgres 23u IPv4 4241106799 0t0 TCP
10.109.165.13:distinct->10.55.96.156:42570 (CLOSE_WAIT)
pgpool 1353478 postgres 25u IPv4 4241106801 0t0 TCP
10.109.165.13:distinct->10.55.96.156:42624 (CLOSE_WAIT)
Here is the pgpool.conf file. (It mostly contains non-default values.)
$ cat /etc/pgpool-II/pgpool.conf
listen_addresses = '*'
port = 9999
unix_socket_directories = '/var/run/postgresql'
backend_clustering_mode = 'streaming_replication'
pcp_listen_addresses = '*'
pcp_port = 9898
pcp_socket_dir = '/var/run/postgresql'
listen_backlog_multiplier = 2
serialize_accept = on
num_init_children = 200
max_pool = 2
reserved_connections = 3
client_idle_limit = 0
child_life_time = 0
load_balance_mode = off
backend_hostname0 = 'FISPCDSPGS202a'
backend_port0 = 5432
backend_weight0 = 2
backend_data_directory0 = '/Database/14/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_application_name0 = 'server0'
backend_hostname1 = 'FISPCDSPGS202b'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/Database/14/data'
backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_application_name1 = 'server1'
enable_pool_hba = on
pool_passwd = '/etc/pgpool-II/pool_passwd'
log_destination = 'stderr'
log_line_prefix = '%m: %a pid %p: '
log_connections = off
log_hostname = on
log_statement = off
log_per_node_statement = off
log_client_messages = on
log_min_messages = info
logging_collector = on
log_directory = '/var/log/pgpool2'
log_filename = 'pgpool-%F_%H.log'
log_truncate_on_rotation = on
log_rotation_age = 1h
log_rotation_size = 0
sr_check_user = 'pool_health_check'
sr_check_database = 'pool_health_check'
health_check_period = 5
health_check_user = 'pool_health_check'
health_check_database = 'pool_health_check'
health_check_max_retries = 10
health_check_retry_delay = 10
use_watchdog = on
wd_priority = 1
delegate_ip = '10.109.165.13'
hostname0 = 'FISPCDSPGS202a'
wd_port0 = 9000
pgpool_port0 = 9999
hostname1 = 'FISPCDSPGS202b'
wd_port1 = 9000
pgpool_port1 = 9999
hostname2 = 'FISPCDSPGS202c'
wd_port2 = 9000
pgpool_port2 = 9999
wd_ipc_socket_dir = '/var/run/postgresql'
if_up_cmd = '/usr/bin/sudo /sbin/ip addr add $_IP_$/26 dev ens192 label
ens192:0'
if_down_cmd = '/usr/bin/sudo /sbin/ip addr del $_IP_$/26 dev ens192'
arping_cmd = '/usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I ens192'
wd_escalation_command = '/etc/pgpool-II/escalation.sh'
wd_lifecheck_method = 'heartbeat'
heartbeat_hostname0 = 'FISPCDSPGS202a'
heartbeat_port0 = 9694
heartbeat_device0 = 'ens192'
heartbeat_hostname1 = 'FISPCDSPGS202b'
heartbeat_port1 = 9694
heartbeat_device1 = 'ens192'
heartbeat_hostname2 = 'FISPCDSPGS202c'
heartbeat_port2 = 9694
heartbeat_device2 = 'ens192'
wd_heartbeat_keepalive = 2
wd_heartbeat_deadtime = 30
memory_cache_enabled = off
#memory_cache_enabled = on
memqcache_oiddir = '/var/log/pgpool2/oiddir'
memqcache_total_size = 1024MB
memqcache_max_num_cache = 1048576
--
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pgpool.net/pipermail/pgpool-general/attachments/20241211/1274090c/attachment.htm>
More information about the pgpool-general
mailing list