Thread: Postgresql docker health check
Hello,
Hope this email finds you well. Currently, I have a running PostgreSQL container, and I've encountered an issue. When my application runs overnight, I receive the error message 'FATAL: Sorry, too many clients already.' To address this, I increased the number of max_connections to 3000, 5000, and also 10000, but I still receive the error. Now, I'm considering implementing a health check. Specifically, I'd like to automatically restart the PostgreSQL container if this error occurs. How can I achieve this with a health check in my Docker Compose?
postgres:
restart: always
image: postgres:latest
# mem_limit: 1g
ports:
- ${POSTGRES_PORT}:${POSTGRES_PORT}
volumes:
- ./data/db/postgres:/var/lib/postgresql/data:rw
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'"]
interval: 30s
timeout: 10s
retries: 5
extra_hosts:
- "postgres:${HOST_IP}"
Best regards,
On 2024-03-12 15:43:13 +0100, Amna Abdul Rehman wrote: > When my application runs overnight, I receive the error message > 'FATAL: Sorry, too many clients already.' To address this, I increased > the number of max_connections to 3000, 5000, and also 10000, but I > still receive the error. Now, I'm considering implementing a health > check. Specifically, I'd like to automatically restart the PostgreSQL > container if this error occurs. While implementing "emergency brakes" like this is generally a good idea, you should investigate why you have so many connections. If you have way more connections than you can reasonably expect, something is wrong, And it is better to fix the root cause than to just hit everything over the head with a hammer periodically. hp -- _ | Peter J. Holzer | Story must make more sense than reality. |_|_) | | | | | hjp@hjp.at | -- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!"