Обсуждение: BUG #18966: Invalid SQL queries hang indefinitely until server restart
BUG #18966: Invalid SQL queries hang indefinitely until server restart
От
PG Bug reporting form
Дата:
The following bug has been logged on the website: Bug reference: 18966 Logged by: Jérémy S Email address: jeremy.spriet@gmail.com PostgreSQL version: 16.9 Operating system: Docker debian Description: Hello, I’m running PostgreSQL 16.9 in Docker (PostgreSQL 16.9 (Debian 16.9-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc 12.2.0, 64-bit), and intermittently observe that invalid SQL queries hang indefinitely instead of immediately returning an error. Valid queries continue to work normally and return results right away. I usually issue statements via a Python client library, but when the issue occurs, I see the same blocking behavior connecting directly with psql—the session simply stalls and never reports syntax errors, “relation does not exist,” or any other error. Only a full restart of the Docker container unblocks all sessions. This has happened 2–3 times over the past six months, but I haven’t been able to reproduce it on demand. When a query hangs, even running: SELECT pg_cancel_backend(pid); or SELECT pg_terminate_backend(pid); does not unblock it. Only restarting the container helps. Does anyone have ideas on what could be causing this behavior? My postgresql.conf: listen_addresses = '*' max_prepared_transactions = 0 shared_buffers = 2000MB temp_buffers = 8MB max_connections = 5010 superuser_reserved_connections = 2 shared_preload_libraries = 'timescaledb,pg_cron,pg_stat_statements' cron.database_name = 'db1' pg_stat_statements.max = 5000 pg_stat_statements.track = top Thanks!
PG Bug reporting form <noreply@postgresql.org> writes:
> I’m running PostgreSQL 16.9 in Docker (PostgreSQL 16.9 (Debian
> 16.9-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc 12.2.0, 64-bit),
> and intermittently observe that invalid SQL queries hang indefinitely
> instead of immediately returning an error.
> Valid queries continue to work normally and return results right away.
What exactly is "invalid" about the troublesome queries? What does
pg_stat_activity show them as doing? When the problem is occurring,
can you run EXPLAIN (*not* EXPLAIN ANALYZE) on them, or does that
hang too?
It's not very difficult to write SQL queries that would run for
unreasonable lengths of time, eg by leaving out a critical join
restriction. I'm wondering if something like that is happening
here. You've not provided nearly enough info to do more than
speculate, however.
> When a query hangs, even running: SELECT pg_cancel_backend(pid); or SELECT
> pg_terminate_backend(pid); does not unblock it.
Hmm, that's unusual (and a strike against my theory above).
Again, pg_stat_activity output would be helpful here.
> My postgresql.conf:
> listen_addresses = '*'
> max_prepared_transactions = 0
> shared_buffers = 2000MB
> temp_buffers = 8MB
> max_connections = 5010
That max_connections value seems fairly insane. It doesn't look like
you've provisioned a setup that is anywhere near capable of supporting
so many sessions. I'd knock it down by at least a factor of 10.
> shared_preload_libraries = 'timescaledb,pg_cron,pg_stat_statements'
I don't suppose you can take timescaledb out of the mix to see
if it's contributing to this.
regards, tom lane
On Tue, 2025-06-24 at 15:09 -0400, Tom Lane wrote: > PG Bug reporting form <noreply@postgresql.org> writes: > > I’m running PostgreSQL 16.9 in Docker (PostgreSQL 16.9 (Debian > > 16.9-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc 12.2.0, 64-bit), > > and intermittently observe that invalid SQL queries hang indefinitely > > instead of immediately returning an error. > > Valid queries continue to work normally and return results right away. > > You've not provided nearly enough info to do more than > speculate, however. Yes. One speculation that occurs to me is that the control group settings of your container are such that a process that exceeds the memory quota is suspended until enough memory becomes free. Yours, Laurenz Albe