Привет!
У меня веб приложение. Используется бд PosgreSQL, для нее выделен отдельный VPS, там сейчас SSD, 1 ядро Intel Xeon E5-2620 и 2гб RAM. Postgres я разворачиваю через docker compose примерно так:
version: '2'
services:
postgres:
image: postgres:10
ports:
- 5432:5432
volumes:
- postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: example
command: postgres -c shared_buffers=512MB -c effective_cache_size=1536MB -c work_mem=2621kB -c maintenance_work_mem=128MB
shm_size: '1gb'
volumes:
postgres:
Наступил мифический хайлоад. БД на большом количестве запросов начинает тормозить. Со структурами индексов и запросов разберусь сам, а по настройке БД хотелось бы спросить:
1. Есть ли специфика использования Postgres в докере? Например, недавно стал получать ошибки типа
https://meta.discourse.org/t/pg-throws-could-not-r... , оказалось проблема в докере, а точнее в деталях настройки ОС, что для меня, простого пыхапешника - лес темный.
2. Правильные ли я передал настройки, может чего не хватает.
3. Может имеет смысл просто установить базу без всяких докеров (использую докер для удобства разработки, портирования и т.д.).
4. Будет ли эффект если добавить физических ядер? Нужно ли для этого отдельно настраивать docker?
К базе примерно 95% запросов - селекты. Сейчас процессор в пики загружен на 100%, в то время как память всего на 150мб, что меня удивляет. База на текущий момент весит ~2гб.
Спасибо!