<div dir="ltr"><p class="MsoNormal" style="font-size:12.8px">I have pgpool configured against two redshift backend clusters to do parallel writes. Seemingly at random, pgpool determines that one or both the clusters are down and stops accepting connections even when they are not down. I have health check configured every 30 seconds but that does not help as it checks heath and still determines they are down in pgpool_status file. How is health status determined and written to the file /var/log/pgpool/pgpool_status and why does pgpool think the clusters are down when they are not?</p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px">I also tested read query routing and noticed they were being routed randomly to the backend clusters. Is there a specific algorithm that pgpool uses for read query routing?</p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px">My config parameters are below </p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px">backend_hostname0 = &#39;cluster1&#39;</p><p class="MsoNormal" style="font-size:12.8px">backend_port0 = 5439</p><p class="MsoNormal" style="font-size:12.8px">backend_weight0 = 1</p><p class="MsoNormal" style="font-size:12.8px">backend_data_directory0 = &#39;/data1&#39;</p><p class="MsoNormal" style="font-size:12.8px">backend_flag0 = &#39;ALLOW_TO_FAILOVER&#39;</p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px">backend_hostname1 = &#39;cluster2&#39;</p><p class="MsoNormal" style="font-size:12.8px">backend_port1 = 5439</p><p class="MsoNormal" style="font-size:12.8px">backend_weight1 = 1</p><p class="MsoNormal" style="font-size:12.8px">backend_data_directory1 = &#39;/data1&#39;</p><p class="MsoNormal" style="font-size:12.8px">backend_flag1 = &#39;ALLOW_TO_FAILOVER&#39;</p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px">#-----------------------------<wbr>------------------------------<wbr>-------------------</p><p class="MsoNormal" style="font-size:12.8px"># HEALTH CHECK</p><p class="MsoNormal" style="font-size:12.8px">#-----------------------------<wbr>------------------------------<wbr>-------------------</p><p class="MsoNormal" style="font-size:12.8px"> </p><p class="MsoNormal" style="font-size:12.8px">health_check_period = 30</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Health check period</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Disabled (0) by default</p><p class="MsoNormal" style="font-size:12.8px">health_check_timeout = 20</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Health check timeout</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # 0 means no timeout</p><p class="MsoNormal" style="font-size:12.8px">health_check_user = &#39;username&#39;</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Health check user</p><p class="MsoNormal" style="font-size:12.8px">health_check_password = &#39;password&#39;</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Password for health check user</p><p class="MsoNormal" style="font-size:12.8px">health_check_max_retries = 10</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Maximum number of times to retry a failed health check before giving up.</p><p class="MsoNormal" style="font-size:12.8px">health_check_retry_delay = 1</p><p class="MsoNormal" style="font-size:12.8px">                              <wbr>     # Amount of time to wait (in seconds) between retries.</p>
</div>