I have a load balanced environment configured in Google Cloud Platform. Behind the load balancer are two servers, which are nearly identical in configuration. One server sits in the US eastern region and one in the US central region. The server in the US eastern region easily handles the entire load on its own, averaging about 45% CPU usage. Whenever I add the server in the central region to the load balancer, its CPU suddenly spikes and stays around 99% usage as long as it is connected to the load balancer.
Additional background: The servers are Windows servers running an ASP.NET Umbraco 7 website. I also have two database servers running MariaDB, one the master, and one a replication slave. The eastern server connects to the master (also in the eastern region). The central server connects to the slave (also in the central region).
Can anyone offer an explanation as to why the central server is struggling?
Things I've tried:
- I tweaked the balancing parameters to try to get more requests to go to the eastern server thinking that might relieve some of the stress on the central server.
- I tried connecting the central server to the master database in the eastern region.
- I uploaded a fresh copy of the site files in case there was some corruption somewhere causing a problem.
- I've followed Google's (automated) advice and increased the RAM (which wasn't really stressed to begin with; it never got above 50% usage).
- I tried spinning up a totally new server, also in the central region, configuring from scratch. Same performance issues.
The best I can figure at the moment is that the server struggles with keeping up with the Health Checker pings, but then why doesn't the other server struggle? Is there something about being in a different region that is causing the issue?
Things I have yet to try. Feel free to suggest a priority on these:
- Moving the central server to another region.
- Moving the central server into the eastern region alongside the other server.
- Adding a CPU
I'm trying to avoid the last one because it seems like treating the symptoms rather than finding the underlying issue.