Коротко: PostgreSQL 15 після встановлення вже працює, але без базового тюнінгу він часто поводиться як чемний, але трохи сонний сервер. Якщо одразу підкрутити пам’ять, WAL, autovacuum і ліміт з’єднань, база стає помітно стабільнішою під реальним навантаженням.
Що перевірити одразу
Після інсталяції дивимось не лише на те, чи сервіс стартував, а й на те, чи він готовий до реальної роботи:
- версія PostgreSQL;
- де лежать data і WAL;
- скільки RAM і CPU є на сервері;
- чи буде база жити сама, чи через connection pool;
- який тип навантаження очікується.
Якщо це продакшн, не залишайте все на дефолтах «якось потім». Дефолти — це добре для старту, але не для спокійного сну.
Базові налаштування
1. shared_buffers
Це головний кеш PostgreSQL. Для невеликого або середнього сервера зазвичай починають обережно, а не з половини RAM.
2. work_mem
Його не варто ставити надто великим, бо це ліміт на кожну операцію, а не на весь сервер. Якщо переборщити, память зникне дуже швидко.
3. wal_buffers і WAL
Якщо WAL лежить на повільному диску, база буде відчутно гальмувати під записом. Для активних систем окремий диск під WAL часто дає хороший ефект.
4. autovacuum
Не вимикайте його «бо шумить». Autovacuum тримає таблиці в робочому стані. Без нього база повільно, але впевнено деградує.
Приклад стартового фрагмента postgresql.conf
shared_buffers = 1GB
work_mem = 16MB
maintenance_work_mem = 256MB
wal_buffers = -1
effective_cache_size = 3GB
checkpoint_completion_target = 0.9
max_connections = 100
Це не магічні числа для всіх. Це лише нормальна стартова точка, яку треба підганяти під RAM і навантаження.
Чому це важливо
На практиці проблеми після інсталяції виглядають дуже буденно:
- запити наче є, але відповідь повільна;
- диск зайнятий, а причина неочевидна;
- база тримає багато з’єднань і починає задихатися;
- autovacuum не встигає прибирати сміття.
Тобто це не просто «оптимізація». Це різниця між сервером, який тягне день, і сервером, який починає скрипіти вже ввечері.
Як діяти
1. Підберіть стартові значення під сервер
Спочатку оцінюємо RAM, CPU і диск. Потім вже чіпаємо пам’ять PostgreSQL.
2. Перевірте connection pool
Якщо застосунок відкриває сотні з’єднань напряму, PostgreSQL буде витрачати ресурси дарма. У такому випадку pool часто важливіший за дрібний тюнінг.
3. Увімкніть базовий моніторинг
Мінімум:
- повільні запити;
- використання диска;
- кількість активних з’єднань;
- autovacuum activity.
4. Проженіть smoke test
Після змін перевірте:
- база стартує;
- є читання і запис;
- немає помилок у логах;
- ключовий застосунок підключається нормально.
5. Не робіть тюнінг один раз і назавжди
Після перших днів навантаження значення майже завжди доводиться підправити. Це нормально.
Типові помилки
- Вимкнути autovacuum. Потім це повертається боргом у вигляді повільної бази.
- Завищити work_mem. Один запит, і пам’ять уже летить.
- Не дивитися на WAL-диск. Потім шукаєте, чому записи гальмують.
- Тримати забагато з’єднань напряму. PostgreSQL не бездонний.
Висновок
Після інсталяції PostgreSQL 15 найкраще зробити простий набір дій: перевірити ресурси, виставити безпечні стартові параметри, не чіпати autovacuum, і одразу прогнати smoke test. Це дає набагато кращий старт, ніж чекати, поки база сама покаже, де їй боляче.
Офіційні джерела:
- https://www.postgresql.org/docs/15/runtime-config-resource.html
- https://www.postgresql.org/docs/15/runtime-config-wal.html
- https://www.postgresql.org/docs/15/routine-vacuuming.html
- https://www.postgresql.org/docs/15/connection-settings.html
- https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server