As a follow-up, I discovered the necessary changes: Add an extra_hosts entry to point the domain name to the load balancer. Reason: Our network does not allow for WAN loopback connections. Because of this, when the PHP container attempts to curl https://www.example.com, the DNS server returns the WAN IP for this (since this DNS is not managed internally). Adding an entry of the internal load balancer virtual IP as an extra_hosts entry solved my problem.
For those reading, this means that if your nslookup within the container returns a public / WAN IP, perhaps add an extra_hosts entry to your docker-compose.yml file so your domain name can resolve to an internal IP which can be serviced. for me it was “www.example.com:172.x.x.x” where 172.x.x.x is the VIP for our load balancer. For you this might be an Nginx reverse proxy server. If your site is HTTPS, this IP should point to whichever server is listening for those HTTPS connections.
As for the offending plugin, I was able to find this with the Troubleshooting Mode, enabling each plugin one-by-one then running the healthcheck. The offending plugin essentially caused the entire site to run slow due to poor MySQL query optimization, and because of such, caused the Health Check to timeout before the operation could be completed. Meaning, there was never any issue with the Health Check (other than needing the extra_hosts entry), but instead a crummy plugin caused the site to not run fast enough to complete the Health Check in time. This is an excellent example of why using quality plugins is important.
-
This reply was modified 6 years ago by BmoreITDan.