#1127: Ошибка FATAL: sorry, too many clients already

Отредактирована: 98 дней назад

Симптомы

Периодически в интерфейсе возникает ошибка [object Object]

Во вкладке Network некоторые запросы завершаются ошибкой 500 Internal error has occurred

В логах контейнера postgres ошибка FATAL: sorry, too many clients already

Решение

Увеличить количество подключений для postgres

1. В конфигурационном файле docker-compose.yml в секции postgres отредактировать значение параметра N:

  postgres:
    image: postgres:14.2-bullseye
    container_name: swarmica-postgres
    shm_size: 4gb
    command: postgres -N 300 -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c wal_keep_size=512MB -c work_mem=8MB -c temp_buffers=16MB -c shared_buffers=4GB -c track_activity_query_size=16384
    restart: always
    volumes:
      - swarmica_postgres_data:/var/lib/postgresql/data:Z
      - swarmica_postgres_data_backups:/backups:z
      - ./pg_hba.conf:/var/lib/postgresql/data/pg_hba.conf
    env_file:
      - .env
    ports:
      - "5432:5432"

Важно Количество N * на work_mem не должно превышать размер shared_buffers! Так же, важно учитывать объем свободной памяти на сервере. Если free -lmt показывает, что более 20% памяти используется в Swap, это значит, что на сервере не хватает памяти и перед тем, как увеличивать количество подключений, необходимо добавить оперативной памяти

2. Перезагрузите приложение docker compose down && docker compose up -d

Причина

Превышено разрешенное количество подключений к базе данных. Такое может быть, если на сервер большая нагрузка по одновременному количеству пользователей