Медленная работа PostgreSQL в Docker

Для стандартизации процесса разработки и тестирования мы решили поместить все сторонние тулзы и библиотеки в контейнеры. В том числе сделали контейнер и для PostgreSQL. Запускаем его при помощи docker compose используя вот такой файл:

version: '3.8'

services:
  postgresql:
    image: prj-postgresql:latest
    container_name: prj-postgresql
    restart: unless-stopped
    stdin_open: true
    tty: true
    command: postgres -c config_file=/etc/postgresql/postgresql.conf
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=****
    ports:
      - "5432:5432"
    volumes:
      - type: bind
        source: $HOME/docker-volumes/postgres
        target: /var/lib/postgresql/data
      - type: bind
        source: ./postgresql.conf
        target: /etc/postgresql/postgresql.conf

Имидж prj-postgres был создан при помощи докер-файла для PostgreSQL 15.5-alpine3.19. Для создания базы данных и восстановления ее из бекапа использовался внешний pgAdmin4. После начала работы с образом мы увидели, что скорость работы базы совершенно неудовлетворительная. Тест при помощи pg_bench для 50 юзеров и двух потоков на продолжительности в 10 минут показал 60 транзакций в секунду, в то время как постгрес вне контейнера на таком же тесте показал 8000 транзакций секунду. Далее мы попробовали подсоединить базу от докерного постгреса к обычному и прогнать тест. В итоге получили значение даже меньшее - 51 транзакция в секунду.

Мы предполагаем, что проблема где-то в создании базы данных. Может, кто-нибудь подскажет, в чем заключается наша ошибка? Мои подозрения связаны с использованием внешнего пгАдмина, но это странно.

UPD При создании базы внутри контейнера скорость увеличилась до 3200 транзакций в секунду. Это терпимо, но неприемлемо из-за удаления базы при остановке контейнера.


Ответы (0 шт):