Я впервые запускаю сервер базы данных, который находится под реальной (не синтетической) рабочей нагрузкой и требует вашей помощи в определении текущего узкого места.
Вопрос: Это 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`