<div dir="ltr">Hi Tatsuo<div><br></div><div>My conclusion is same as yours for this issue. And I think your patch will fix the problem. I think as part of this patch, adding the error string to the error log if select () call fails will be helpful. Please find the updated patch which just adds the strerror() to the log message reporting the select call failure. Rest of the patch is unchanged.</div><div><br></div><div>Thanks</div><div>Best regards</div><div>Muhammad Usama</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 28, 2015 at 1:29 PM, Tatsuo Ishii <span dir="ltr">&lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry I forgot to attach the patch.<br>
<div class="HOEnZb"><div class="h5"><br>
Best regards,<br>
--<br>
Tatsuo Ishii<br>
SRA OSS, Inc. Japan<br>
English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
Japanese:<a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
<br>
&gt; I suspect while the health check routine tries to connect to backend,<br>
&gt; select(2) was interrupted by certain signal. The signal could be<br>
&gt; SIGCHLD, since you have pretty large number (2000) of child process,<br>
&gt; plus you enable child_life_time (300). This means that after pgpool<br>
&gt; becomes idle, child process starts to exit within 0.15 second (=<br>
&gt; 300/2000) in average. If health check is executed (which is every 10<br>
&gt; seconds) at the same time when child exits, select(2) will be<br>
&gt; interrupted.<br>
&gt;<br>
&gt; Fix is, check if the signal is other than SIGALRM (which is used for<br>
&gt; health check by the health check routine itself). If not, just retries<br>
&gt; the select(2).<br>
&gt;<br>
&gt; Attached patch implements it.<br>
&gt;<br>
&gt; Best regards,<br>
&gt; --<br>
&gt; Tatsuo Ishii<br>
&gt; SRA OSS, Inc. Japan<br>
&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt; Japanese:<a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;<br>
&gt;&gt; Hi Tatsuo<br>
&gt;&gt;<br>
&gt;&gt; Sorry for the late reply. Attached pgpool.cnf, but also in text below for mailing list.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Postgres: 9.3.5<br>
&gt;&gt;<br>
&gt;&gt; Pgpool version: pgpool-II-pg93-3.4.0-3pgdg.rhel6.x86_64 (from rpm -qa)<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Pgpool.conf (with out comments)<br>
&gt;&gt;<br>
&gt;&gt; listen_addresses = &#39;*&#39;<br>
&gt;&gt; port = 9999<br>
&gt;&gt; socket_dir = &#39;/tmp&#39;<br>
&gt;&gt; listen_backlog_multiplier = 2<br>
&gt;&gt; pcp_listen_addresses = &#39;*&#39;<br>
&gt;&gt; pcp_port = 9898<br>
&gt;&gt; pcp_socket_dir = &#39;/tmp&#39;<br>
&gt;&gt; backend_hostname0 = &#39;X.X.X.50&#39;<br>
&gt;&gt; backend_port0 = 5432<br>
&gt;&gt; backend_weight0 = 4<br>
&gt;&gt; backend_data_directory0 = &#39;/var/lib/pgsql/9.3/data&#39;<br>
&gt;&gt; backend_flag0 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt; backend_hostname1 = &#39;X.X.X.51&#39;<br>
&gt;&gt; backend_port1 = 5432<br>
&gt;&gt; backend_weight1 = 3<br>
&gt;&gt; backend_data_directory1 = &#39;/var/lib/pgsql/9.3/data&#39;<br>
&gt;&gt; backend_flag1 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt; backend_hostname2 = &#39;X.X.X.52&#39;<br>
&gt;&gt; backend_port2 = 5432<br>
&gt;&gt; backend_weight2 = 3<br>
&gt;&gt; backend_data_directory2 = &#39;/var/lib/pgsql/9.3/data&#39;<br>
&gt;&gt; backend_flag2 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt; enable_pool_hba = on<br>
&gt;&gt; pool_passwd = &#39;pool_passwd&#39;<br>
&gt;&gt; authentication_timeout = 60<br>
&gt;&gt; ssl = off<br>
&gt;&gt; num_init_children = 2000<br>
&gt;&gt; max_pool = 4<br>
&gt;&gt; child_life_time = 300<br>
&gt;&gt; child_max_connections = 0<br>
&gt;&gt; connection_life_time = 0<br>
&gt;&gt; client_idle_limit = 0<br>
&gt;&gt; log_destination = &#39;stderr&#39;<br>
&gt;&gt; log_line_prefix = &#39;%p %t &#39;<br>
&gt;&gt; log_standby_delay = &#39;none&#39;<br>
&gt;&gt; syslog_facility = &#39;LOCAL0&#39;<br>
&gt;&gt; syslog_ident = &#39;pgpool&#39;<br>
&gt;&gt; debug_level = 0<br>
&gt;&gt; pid_file_name = &#39;/tmp/pgpool/pgpool.pid&#39;<br>
&gt;&gt; logdir = &#39;/var/log/pgpool&#39;<br>
&gt;&gt; connection_cache = on<br>
&gt;&gt; reset_query_list = &#39;ABORT; DISCARD ALL&#39;<br>
&gt;&gt; replication_mode = off<br>
&gt;&gt; replicate_select = off<br>
&gt;&gt; insert_lock = on<br>
&gt;&gt; lobj_lock_table = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; replication_stop_on_mismatch = off<br>
&gt;&gt;<br>
&gt;&gt; failover_if_affected_tuples_mismatch = off<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; load_balance_mode = on<br>
&gt;&gt; ignore_leading_white_space = on<br>
&gt;&gt; white_function_list = &#39;&#39;<br>
&gt;&gt; black_function_list = &#39;breadcrumbtrails,f_round,t_round,fn_CalculateUserStatement,nextval,setval,nextval,setval,fn_settierlili,fn_GetImageForCategory,tblSessions,articles,fn_ManagerPoints,process,fn.*,fn_.*,fn_RepReport&#39;<br>
&gt;&gt;<br>
&gt;&gt; database_redirect_preference_list = &#39;otrstest:primary&#39;<br>
&gt;&gt;<br>
&gt;&gt; app_name_redirect_preference_list = &#39;&#39;<br>
&gt;&gt; allow_sql_comments = off<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; master_slave_mode = on<br>
&gt;&gt; master_slave_sub_mode = &#39;stream&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; sr_check_period = 10<br>
&gt;&gt; sr_check_user = &#39;postgres&#39;<br>
&gt;&gt; sr_check_password = &#39;&#39;<br>
&gt;&gt; delay_threshold = 1024<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; follow_master_command = &#39;/etc/pgpool-II/follow_master.sh %d %M %h&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; health_check_period = 10<br>
&gt;&gt; health_check_timeout = 20<br>
&gt;&gt; health_check_user = &#39;postgres&#39;<br>
&gt;&gt; health_check_password = &#39;&#39;<br>
&gt;&gt; health_check_max_retries = 2<br>
&gt;&gt; health_check_retry_delay = 1<br>
&gt;&gt; connect_timeout = 10000<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; failover_command = &#39;/etc/pgpool-II/failover.sh %d %P %H %R&#39;<br>
&gt;&gt; failback_command = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt; fail_over_on_backend_error = on<br>
&gt;&gt;<br>
&gt;&gt; search_primary_node_timeout = 10<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; recovery_user = &#39;postgres&#39;<br>
&gt;&gt; recovery_password = &#39;&#39;<br>
&gt;&gt; recovery_1st_stage_command = &#39;recovery_1st_stage&#39;<br>
&gt;&gt; recovery_2nd_stage_command = &#39;&#39;<br>
&gt;&gt; recovery_timeout = 90<br>
&gt;&gt; client_idle_limit_in_recovery = 0<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; use_watchdog = on<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; trusted_servers = &#39;&#39;<br>
&gt;&gt; ping_path = &#39;/home/apache/sbin&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; wd_hostname = &#39;UI-IS-POOL1&#39;<br>
&gt;&gt; wd_port = 9000<br>
&gt;&gt; wd_authkey = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; delegate_IP = &#39;X.X.X.60&#39;<br>
&gt;&gt; ifconfig_path = &#39;/home/apache/sbin&#39;<br>
&gt;&gt; if_up_cmd = &#39;ifconfig ens32:0 inet $_IP_$ netmask 255.255.255.0&#39;<br>
&gt;&gt; if_down_cmd = &#39;ifconfig ens32:0 down&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; arping_cmd = &#39;arping -U $_IP_$ -w 1&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; clear_memqcache_on_escalation = on<br>
&gt;&gt; wd_escalation_command = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; wd_lifecheck_method = &#39;heartbeat&#39;<br>
&gt;&gt; wd_interval = 3<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; wd_heartbeat_port = 9694<br>
&gt;&gt; wd_heartbeat_keepalive = 2<br>
&gt;&gt; wd_heartbeat_deadtime = 30<br>
&gt;&gt;<br>
&gt;&gt; heartbeat_destination0 = &#39;X.X.X.61&#39;<br>
&gt;&gt; heartbeat_destination_port0 = 9694<br>
&gt;&gt; heartbeat_device0 = &#39;&#39;<br>
&gt;&gt; heartbeat_destination1 = &#39;X.X.X.62&#39;<br>
&gt;&gt; heartbeat_destination_port1 = 9694<br>
&gt;&gt; heartbeat_device1 = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; wd_life_point = 3<br>
&gt;&gt; wd_lifecheck_query = &#39;SELECT 1&#39;<br>
&gt;&gt; wd_lifecheck_dbname = &#39;template1&#39;<br>
&gt;&gt; wd_lifecheck_user = &#39;postgres&#39;<br>
&gt;&gt; wd_lifecheck_password = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; other_pgpool_hostname0 = &#39;X.X.X.62&#39;<br>
&gt;&gt; other_pgpool_port0 = 9999<br>
&gt;&gt; other_wd_port0 = 9000<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; relcache_expire = 0<br>
&gt;&gt;<br>
&gt;&gt; relcache_size = 256<br>
&gt;&gt;<br>
&gt;&gt; check_temp_table = on<br>
&gt;&gt;<br>
&gt;&gt; check_unlogged_table = off<br>
&gt;&gt;<br>
&gt;&gt; memory_cache_enabled = off<br>
&gt;&gt; memqcache_method = &#39;shmem&#39;<br>
&gt;&gt; memqcache_memcached_host = &#39;localhost&#39;<br>
&gt;&gt; memqcache_memcached_port = 11211<br>
&gt;&gt; memqcache_total_size = 67108864<br>
&gt;&gt; memqcache_max_num_cache = 1000000<br>
&gt;&gt; memqcache_expire = 0<br>
&gt;&gt; memqcache_auto_cache_invalidation = on<br>
&gt;&gt; memqcache_maxcache = 409600<br>
&gt;&gt; memqcache_cache_block_size = 1048576<br>
&gt;&gt; memqcache_oiddir = &#39;/var/log/pgpool/oiddir&#39;<br>
&gt;&gt; white_memqcache_table_list = &#39;&#39;<br>
&gt;&gt; black_memqcache_table_list = &#39;&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Robert Kennedy| Software &amp; Systems Developer|<br>
&gt;&gt;<br>
&gt;&gt; Tel: (011) 557-5700  | Ext: 011 557 5729    | Cell: 084 998 9850<br>
&gt;&gt;<br>
&gt;&gt;  Email : <a href="mailto:robert@uwiniwin.co.za">robert@uwiniwin.co.za</a> | Site: <a href="http://www.uwiniwin.co.za" target="_blank">www.uwiniwin.co.za</a><br>
&gt;&gt; Address : The Oval Office Park , Ground Floor Kingsmead, Meadowbrook Lane, Bryanston<br>
&gt;&gt; -----Original Message-----<br>
&gt;&gt; From: Tatsuo Ishii [mailto:<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>]<br>
&gt;&gt; Sent: Wednesday, May 27, 2015 11:11 AM<br>
&gt;&gt; To: Robert Kennedy<br>
&gt;&gt; Cc: <a href="mailto:pgpool-general@pgpool.net">pgpool-general@pgpool.net</a><br>
&gt;&gt; Subject: Re: [pgpool-general: 3756] Connection Interrupted<br>
&gt;&gt;<br>
&gt;&gt; Can you please provide details:<br>
&gt;&gt;<br>
&gt;&gt; - pgpool-II version (and RPM version if any)<br>
&gt;&gt; - PostgreSQL version<br>
&gt;&gt; - pgpool.conf<br>
&gt;&gt;<br>
&gt;&gt; Best regards,<br>
&gt;&gt; --<br>
&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt; Japanese:<a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;<br>
&gt;&gt;&gt; Hi Guys<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I keep getting this error randomly appearing in my logs.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 23734 2015-05-27 10:45:52 LOG:  failed to connect to PostgreSQL server on &quot;x.x.x.x:5432&quot; using INET socket<br>
&gt;&gt;&gt; 23734 2015-05-27 10:45:52 DETAIL:  select() system call interrupted<br>
&gt;&gt;&gt; 23734 2015-05-27 10:45:52 ERROR:  failed to make persistent db connection<br>
&gt;&gt;&gt; 23734 2015-05-27 10:45:52 DETAIL:  connection to host:&quot;x.x.x.x:5432&quot; failed<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; However I can connect to the server on that perfectly, and it seems pgpool can connect as well as no failover event gets called.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; My concern is I&#39;m loosing data, as this is my primary(master) server. I do see the same error for my slave as well tho.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Please advise what may be causing this, and let me know if you require any more information.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Robert Kennedy| Software &amp; Systems Developer<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Tel: 011 557 5729 | Ext:229 | Cell: 084 998 9850<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Email: <a href="mailto:robert@uwiniwin.co.za">robert@uwiniwin.co.za</a> | Site: <a href="http://www.uwiniwin.co.za" target="_blank">www.uwiniwin.co.za</a><br>
&gt;&gt;&gt; Address: The Oval Office Park , Ground Floor Kingsmead, Meadowbrook Lane, Bryanston<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [site-award-logo]<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [site-aita-logo]<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [cid:image003.jpg@01D0986B.205AF960]&lt;<a href="https://twitter.com/intent/follow?original_referer=http%3A%2F%2Fwww.linkedin.com%2Fprofile%2Fview%3Fid%3D7202140%26locale%3Den_US%26trk%3Dtyah&amp;region=follow_link&amp;screen_name=sandmandavid&amp;source=followbutton&amp;variant=2.0" target="_blank">https://twitter.com/intent/follow?original_referer=http%3A%2F%2Fwww.linkedin.com%2Fprofile%2Fview%3Fid%3D7202140%26locale%3Den_US%26trk%3Dtyah&amp;region=follow_link&amp;screen_name=sandmandavid&amp;source=followbutton&amp;variant=2.0</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [czxc]&lt;<a href="http://www.facebook.com/UwinIwinIncentives" target="_blank">http://www.facebook.com/UwinIwinIncentives</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [cid:image005.jpg@01D0986B.205AF960]&lt;<a href="http://www.linkedin.com/company/uwin-iwin-incentives?trk=fc_badge" target="_blank">http://www.linkedin.com/company/uwin-iwin-incentives?trk=fc_badge</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [cid:image006.jpg@01D0986B.205AF960]&lt;<a href="http://www.linkedin.com/company/uwin-iwin-incentives?trk=fc_badge" target="_blank">http://www.linkedin.com/company/uwin-iwin-incentives?trk=fc_badge</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; [cid:image007.jpg@01D0986B.205AF960]&lt;<a href="http://www.uwiniwin.net/" target="_blank">http://www.uwiniwin.net/</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Please consider the environment before printing this email-<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The views expressed in this e-mail are, unless otherwise stated, those of the author and not those of Uwin Iwin Incentives (PTY) LTD or its management. The information in this e-mail is confidential and is intended solely for the addressee. Access to this e-mail by anyone else is unauthorised. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted in reliance on this is prohibited and may be unlawful. Whilst all reasonable steps are taken to ensure the accuracy and integrity of information and data transmitted electronically and to preserve the confidentiality thereof, no liability or responsibility whatsoever is accepted if information or data is, for whatever reason, corrupted or does not reach its intended destination.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; pgpool-general mailing list<br>
&gt; <a href="mailto:pgpool-general@pgpool.net">pgpool-general@pgpool.net</a><br>
&gt; <a href="http://www.pgpool.net/mailman/listinfo/pgpool-general" target="_blank">http://www.pgpool.net/mailman/listinfo/pgpool-general</a><br>
</div></div><br>_______________________________________________<br>
pgpool-general mailing list<br>
<a href="mailto:pgpool-general@pgpool.net">pgpool-general@pgpool.net</a><br>
<a href="http://www.pgpool.net/mailman/listinfo/pgpool-general" target="_blank">http://www.pgpool.net/mailman/listinfo/pgpool-general</a><br>
<br></blockquote></div><br></div>