On 3/13/23 9:24 AM, Harrison Borges wrote:
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.
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.
1) https://wiki.postgresql.org/wiki/Slow_Counting
2) Are you using connection pooling?
I would appreciate any insights or advice on how to optimize Postgres
for high concurrency scenarios. Thank you in advance for your help!
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx