<div dir="ltr"><div>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.</div><div><br></div><div>PgPool 4.5.4</div><div>Postgresql 14.15</div><div><br></div><div>PgPool on nodes FISPCDSPGS202a, FISPCDSPGS202b. FISPCDSPGS202c</div><div>VIP on node FISPCDSPGS202c</div><div>Postgresql on nodes FISPCDSPGS202a, FISPCDSPGS202b.</div><div><br></div><div>These commands were run on FISPCDSPGS202c:</div><div><br></div><div><font face="monospace">$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | wc<br>    796    7960   94752<br><br>$ sudo ps -fp1353478 <br>UID          PID    PPID  C STIME TTY          TIME CMD<br>postgres 1353478 1353268  0 02:41 ?        00:00:03 pgpool: fis_cds cdsbmop 10.55.96.146(59522) idle<br><br>$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | wc<br>    796    7960   94752<br><br>$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | wc<br>    796    7960   94752<br><br>$ sudo lsof -n -iTCP -sTCP:CLOSE_WAIT | grep 1353478 | head<br>pgpool   1353478 postgres   12u  IPv4 4241106787      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40032">10.55.96.156:40032</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   13u  IPv4 4241106788      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40074">10.55.96.156:40074</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   14u  IPv4 4241106789      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40094">10.55.96.156:40094</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   17u  IPv4 4241106793      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40180">10.55.96.156:40180</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   18u  IPv4 4241106794      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40204">10.55.96.156:40204</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   20u  IPv4 4241106796      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40266">10.55.96.156:40266</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   21u  IPv4 4241106797      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40294">10.55.96.156:40294</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   22u  IPv4 4241106798      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:40310">10.55.96.156:40310</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   23u  IPv4 4241106799      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:42570">10.55.96.156:42570</a> (CLOSE_WAIT)<br>pgpool   1353478 postgres   25u  IPv4 4241106801      0t0  TCP 10.109.165.13:distinct-><a href="http://10.55.96.156:42624">10.55.96.156:42624</a> (CLOSE_WAIT)<br></font><br>Here is the pgpool.conf file.  (It mostly contains non-default values.)<br><br><font face="monospace">$ cat /etc/pgpool-II/pgpool.conf<br>listen_addresses = '*'<br>port = 9999<br>unix_socket_directories = '/var/run/postgresql'<br>backend_clustering_mode = 'streaming_replication'<br><br>pcp_listen_addresses = '*'<br>pcp_port = 9898<br>pcp_socket_dir = '/var/run/postgresql'<br><br>listen_backlog_multiplier = 2<br>serialize_accept = on<br>num_init_children = 200<br>max_pool = 2<br>reserved_connections = 3<br>client_idle_limit = 0<br>child_life_time = 0<br><br>load_balance_mode = off<br><br>backend_hostname0 = 'FISPCDSPGS202a'<br>backend_port0 = 5432<br>backend_weight0 = 2<br>backend_data_directory0 = '/Database/14/data'<br>backend_flag0 = 'ALLOW_TO_FAILOVER'<br>backend_application_name0 = 'server0'<br><br>backend_hostname1 = 'FISPCDSPGS202b'<br>backend_port1 = 5432<br>backend_weight1 = 1<br>backend_data_directory1 = '/Database/14/data'<br>backend_flag1 = 'ALLOW_TO_FAILOVER'<br>backend_application_name1 = 'server1'<br><br>enable_pool_hba = on<br>pool_passwd = '/etc/pgpool-II/pool_passwd'<br><br>log_destination = 'stderr'<br>log_line_prefix = '%m: %a pid %p: '<br>log_connections = off<br>log_hostname = on<br>log_statement = off<br>log_per_node_statement = off<br>log_client_messages = on<br>log_min_messages = info<br>logging_collector = on<br>log_directory = '/var/log/pgpool2'<br>log_filename = 'pgpool-%F_%H.log'<br>log_truncate_on_rotation = on<br>log_rotation_age = 1h<br>log_rotation_size = 0<br><br>sr_check_user = 'pool_health_check'<br>sr_check_database = 'pool_health_check'<br><br>health_check_period = 5<br>health_check_user = 'pool_health_check'<br>health_check_database = 'pool_health_check'<br>health_check_max_retries = 10<br>health_check_retry_delay = 10<br><br>use_watchdog = on<br>wd_priority = 1<br>delegate_ip = '10.109.165.13'<br><br>hostname0 = 'FISPCDSPGS202a'<br>wd_port0 = 9000<br>pgpool_port0 = 9999<br><br>hostname1 = 'FISPCDSPGS202b'<br>wd_port1 = 9000<br>pgpool_port1 = 9999<br><br>hostname2 = 'FISPCDSPGS202c'<br>wd_port2 = 9000<br>pgpool_port2 = 9999<br><br>wd_ipc_socket_dir = '/var/run/postgresql'<br>if_up_cmd = '/usr/bin/sudo /sbin/ip addr add $_IP_$/26 dev ens192 label ens192:0'<br>if_down_cmd = '/usr/bin/sudo /sbin/ip addr del $_IP_$/26 dev ens192'<br>arping_cmd = '/usr/bin/sudo /usr/sbin/arping -U $_IP_$ -w 1 -I ens192'<br><br>wd_escalation_command = '/etc/pgpool-II/escalation.sh'<br>wd_lifecheck_method = 'heartbeat'<br><br>heartbeat_hostname0 = 'FISPCDSPGS202a'<br>heartbeat_port0 = 9694<br>heartbeat_device0 = 'ens192'<br><br>heartbeat_hostname1 = 'FISPCDSPGS202b'<br>heartbeat_port1 = 9694<br>heartbeat_device1 = 'ens192'<br><br>heartbeat_hostname2 = 'FISPCDSPGS202c'<br>heartbeat_port2 = 9694<br>heartbeat_device2 = 'ens192'<br><br>wd_heartbeat_keepalive = 2<br>wd_heartbeat_deadtime = 30<br><br>memory_cache_enabled = off<br>#memory_cache_enabled = on<br>memqcache_oiddir = '/var/log/pgpool2/oiddir'<br>memqcache_total_size = 1024MB<br>memqcache_max_num_cache = 1048576<br></font></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Death to <Redacted>, and butter sauce.<div>Don't boil me, I'm still alive.<br><div><div><Redacted> lobster!</div></div></div></div></div></div>