Memory Usage / Использование оперативной памяти #495

Closed
opened 2026-04-05 16:16:35 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @lolmens on 7/17/2025

Сделал несколько тестов и удивился тому как используется память.
Мой тестовый сетап:

version: "3"
services:
  postgresus:
    container_name: postgresus
    image: rostislavdugin/postgresus:latest
    ports:
      - "4005:4005"
    volumes:
      - ./postgresus-data:/postgresus-data
    depends_on:
      -  postgresus-db
    restart: unless-stopped

  postgresus-db:
    container_name: postgresus-db
    image: postgres:17
    # we use default values, but do not expose
    # PostgreSQL ports so it is safe
    environment:
      - POSTGRES_DB=postgresus
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=Q1234567
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    command: -p 5437
    shm_size: 10gb
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d postgresus -p 5437"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

Тестовая DB

select t1.datname AS db_name,  pg_size_pretty(pg_database_size(t1.datname)) as db_size from pg_database t1 order by pg_database_size(t1.datname) desc;
db_name       |db_size|
--------------+-------+
nvme          |596 GB |
postgres      |281 GB | <- Копировать будем эту.

Настройка подключения к БД

Image

Настройка подключения к S3

Image

Использование памяти

Image

Насколько я понимаю, перед загрузкой в S3 происходит кеширование ответа pg_dump в памяти.
Возможно стоит рассмотреть использование MultipartUpload и на лету разрезать ответ pg_dump на отдельные запросы S3, чтобы не кешировать слишком много в памяти?

*Originally created by @lolmens on 7/17/2025* Сделал несколько тестов и удивился тому как используется память. Мой тестовый сетап: ```yaml version: "3" services: postgresus: container_name: postgresus image: rostislavdugin/postgresus:latest ports: - "4005:4005" volumes: - ./postgresus-data:/postgresus-data depends_on: - postgresus-db restart: unless-stopped postgresus-db: container_name: postgresus-db image: postgres:17 # we use default values, but do not expose # PostgreSQL ports so it is safe environment: - POSTGRES_DB=postgresus - POSTGRES_USER=postgres - POSTGRES_PASSWORD=Q1234567 volumes: - ./pgdata:/var/lib/postgresql/data command: -p 5437 shm_size: 10gb healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d postgresus -p 5437"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped ``` Тестовая DB ```sql select t1.datname AS db_name, pg_size_pretty(pg_database_size(t1.datname)) as db_size from pg_database t1 order by pg_database_size(t1.datname) desc; ``` ``` db_name |db_size| --------------+-------+ nvme |596 GB | postgres |281 GB | <- Копировать будем эту. ``` Настройка подключения к БД <img width="743" height="488" alt="Image" src="https://github.com/user-attachments/assets/94addf78-9379-467d-bcaf-7c256fd49767" /> Настройка подключения к S3 <img width="316" height="291" alt="Image" src="https://github.com/user-attachments/assets/737b0bc4-9e14-4165-88cc-e32d1f324fc2" /> Использование памяти <img width="1137" height="310" alt="Image" src="https://github.com/user-attachments/assets/8b61f3fc-8c6e-40f9-a787-4e2dac5aa133" /> Насколько я понимаю, перед загрузкой в S3 происходит кеширование ответа pg_dump в памяти. Возможно стоит рассмотреть использование MultipartUpload и на лету разрезать ответ pg_dump на отдельные запросы S3, чтобы не кешировать слишком много в памяти?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/databasus#495