Назад | Перейти на главную страницу

Определить текущее узкое место на моем сервере PostgreSQL

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

Вопрос: Это CPU, RAM, Disk IO?

Если количество запросов к базе данных увеличится вдвое, спецификации какого сервера также следует удвоить? Я намерен сначала увеличить масштаб, а не масштабировать, поскольку последнее будет включать распределенные базы данных, сегментирование и т. Д.

1 PostgreSQL 11.2 работает внутри контейнера Docker на сервере под управлением Ubuntu 18.04. Сервер представляет собой Digital Ocean VPS с 1 виртуальным ЦП (2,3 ГГц), 1 ГБ ОЗУ, 25 ГБ SSD.

2 База данных требует большого количества операций записи и получает в общей сложности 1000–2000 запросов INSERT в секунду от 2 серверов приложений. Каждый сервер приложений использует пул соединений максимум из 50 соединений. PostgreSQL в настоящее время настроен на максимальное количество подключений 100.


Выход iostat -c 5 3

~ 400 TPS на SSD VPS с ожидаемым максимумом 5000 IOPS.

Выход iotop

Скорость записи на диск колеблется от 4 до 40 МБ / с.

Выход htop

Загрузка процессора колеблется от 40% до 80%.


Контрольные точки

Для проверки, достигаем ли мы ограничений системы

Выход fio Тест с 75% случайных записей

`fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=25`