Hello everyone.
I’m running into severe performance problems with Postgres as I increase the number of concurrent requests against my backend. I’ve identified that the bottleneck is Postgres, and to simplify the test case, I created an endpoint that only does a count query on a table with ~500k rows. At 5 concurrent users, the response time was 33ms, at 10 users it was 60ms, and at 20 users it was 120ms.
As the number of concurrent users increases, the response time for the count query also increases significantly, indicating that Postgres may not be scaling well to handle the increasing load.
As the number of concurrent users increases, the response time for the count query also increases significantly, indicating that Postgres may not be scaling well to handle the increasing load.
This manifests in essentially a server meltdown on production. As the concurrent requests stack up, our server is stuck waiting for more and more queries. Eventually requests begin timing out as they start taking over 30 seconds to respond.
Am I doing something obviously wrong? Does this sound like normal behavior? I'm not very experienced at DB ops so I'm not 100% sure what to expect here, but I have worked as a Software Engineer for over 10 years and I've not encountered problems like this before.
I would appreciate any insights or advice on how to optimize Postgres for high concurrency scenarios. Thank you in advance for your help!