Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр У самурая нет цели — есть лишь путь. Долгий и бесконечный. С каждым шагом, оттачивая мастерство, он движется всё дальше вперёд.

Долгий путь: idle

Кликер, Ролевые, Фэнтези

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
kznalp
kznalp
Postgres DBA
Серия СУБД PostgreSQL

PG_HAZEL - оперативно-тактический комплекс мониторинга и анализа производительности СУБД PostgreSQL⁠⁠

8 месяцев назад

Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).

Скоро орешник даст плоды.

Скоро орешник даст плоды.

Начало

Эскизный проект

ℹ️Текущие возможности

✅Снимки pg_stat_activity , pg_locks , PostgreSQL RAM utilization.

✅Сбор статистических данных для оценки производительности на уровне СУБД.

✅Сбор статистических данных для оценки производительности на уровне SQL выражения.

✅История инцидентов снижения операционной скорости СУБД.

✅Связь между инцидентами и SQL выражениями.

✅Оперативная и сводная отчётность по инцидентам и нагрузочному тестированию.

✅Метрики оценки и мониторинга производительности СУБД.

✅Методология анализа инцидентов.

Показать полностью 1
[моё] Субд Postgresql Производительность Инженер Исследования Тестирование Мониторинг
0
kznalp
kznalp
Postgres DBA
Серия СУБД PostgreSQL

Гипотеза о пользе benchmark⁠⁠

10 месяцев назад

Имеется SQL запрос используемый , используемый в качестве бенчмарка.
Идея очень простая - среднее(медианное) время выполнения запроса является показателем пропускной способности СУБД в целом.

Гипотеза - увеличение benchmark кластера 📈при нулевом значении ожиданий - свидетельствует о нехватке вычислительной мощности для СУБД. Или другими словами - пропускная способность СУБД не соответствует характеру нагрузки.

При проведении нагрузочного тестирования хорошо видно, что после определённого значения нагрузки на СУБД (количество сессий pgbench), среднее время бенчмарк увеличивается . Т.е. если гипотеза подтвердится , то можно будет использовать бенчмарк для оценки пропускной способности СУБД.

[моё] Postgresql Субд Мониторинг Производительность Тестирование Текст
2
kznalp
kznalp
Лига Новых Технологий
Серия СУБД PostgreSQL

"pgbench не бенчмарк" ?⁠⁠

10 месяцев назад

Взято из архива основного технического канала Postgres DBA

Предисловие

В ходе работ по подготовке эпюры производительности СУБД в очередной раз была получена иллюстрация проблем использования среднего арифметического при расчете производительности СУБД .

Последовательный рост нагрузки на СУБД

По X - номер итерации. По Y - количество сессий pgbench

По X - номер итерации. По Y - количество сессий pgbench

Результаты pgbench

Первые же результаты , показали несогласованность pgbench - TPS - с реальными показателями производительности СУБД

По оси X - номер итерации. По оси Y - TPS. TPS по результатам pgbench - растет.

По оси X - номер итерации. По оси Y - TPS. TPS по результатам pgbench - растет.

Значение tps получено тривиально, из результата теста :

лог | grep tps

Среднее время отклика СУБД

По оси X - номер итерации. По оси Y - среднее время отклика СУБД.

По оси X - номер итерации. По оси Y - среднее время отклика СУБД.

Время отклика вычисляется , также, стандартно:

SUM(total_exec_time) / SUM(calls)

За период из представления pg_stat_statements.

И тут возникает 2 варианта анализа результатов:

1) Если ориентироваться на результаты pgbench, то , при росте количества подключений c 60 до 70 - tps вырос с 12870,870996 до 13294,489494 (+3%)

2) Если ориентироваться на среднее время отклика СУБД , то, при аналогичном росте количества подключений c 60 до 70 - среднее время отклика увеличилось на 100%

Вопрос - как анализировать результаты теста ?

Производительность СУБД растет с ростом нагрузки или нет ?

P.S.

Очередная иллюстрация на тему - ни TPS , ни время отклика - по отдельности не являются метриками производительности СУБД, потому, что не позволяют предсказать и описать реальную картину и получить объективные данные о реальной производительности СУБД .

P.P.S. Также нужно отметить, что история и анализ данных tps из лога pgbench с помощью grep - не самая удобная процедура . Особенно если не одна итерация, а несколько десятков.

Так, что - как средство создания нагрузки pgbench вполне рабочий и удобный инструмент. Как средство анализа результатов - нет.

Послесловие

Материал носит ознакомительный, справочный характер. Используемая методика расчета среднего времени отклика СУБД в настоящее время не используется. Вообще , среднее арифметическое в расчетах не используется. Да и методика расчета производительности СУБД сильно изменена , в настоящее время идут тесты и анализ результатов. Статьи будут чуть позже.

В связи с проблемами более подробно разобранными в статье О проблеме использования mean_exec_time при анализе производительности PostgreSQL

Показать полностью 3
[моё] Postgresql Субд Производительность Мониторинг Тестирование Длиннопост Вопрос
0
kznalp
kznalp
Лига Новых Технологий
Серия СУБД PostgreSQL

PostgreSQL - WAL : HDD vs. SSD⁠⁠

10 месяцев назад

Взято с основного технического канала Postgres DBA

Продолжение цикла статей о статистическом анализе результатов нагрузочного тестирования СУБД PostgreSQL :

  • Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО

  • Сравнение производительности PostgreSQL

  • Производительность PostgreSQL для разных ОС - часть 1

  • Производительность PostgreSQL для разных ОС - часть 2

  • Производительность PostgreSQL для разных ОС - часть 3

Статья завершает цикл статей о тестировании методики анализа результатов нагрузочного тестирования СУБД PostgreSQL . В настоящее время ведутся работы по совершенствованию методики расчета и сбора статистических данных производительности. По окончании разработки, сценарии тестирования будут повторены , результаты опубликованы с более детальным описанием процесса и результатов.

Задача и реализация эксперимента

Установить количественное влияние расположения файловой системы WAL на производительность СУБД.

В пределе - разницы нет. Но , есть некоторые моменты.

В пределе - разницы нет. Но , есть некоторые моменты.

Для тестирования используется сценарий "Insert only" : 1000 INSERT в тестовую таблицу pgbench_history.

Тестируются 2 виртуальные машины : ВМ-1 , ВМ-2.

  • Версия СУБД - одинакова.

  • ОС - одинаковая.

  • Гипервизор - один.

Различия:

  1. Системный диск: HDD / SSD

  2. Файловая система /wal: HDD / SSD

Результаты эксперимента

Пояснение : по горизонтальной оси графиков(в данной и предыдущих статьях) - количество одновременных сессий pgbench.

Производительность СУБД

Некоторая разница в производительности - все таки наблюдается

Некоторая разница в производительности - все таки наблюдается

Время выполнения тестовой транзакции

Разница по времени - практически отсутствует

Разница по времени - практически отсутствует

Относительная разница производительности и времени работы

После 20 соединений разница в производительности и времени работы - несущественна

После 20 соединений разница в производительности и времени работы - несущественна

Итоги

При данном сценарии нагрузки , в данной облачной инфраструктуре - статистически значимая разница в производительности для СУБД с расположением файловой системы WAL на диске HDD или на SSD - отсутствует.

P.S. Еще одна иллюстрация по теме влияния HDD/SSD на скорость СУБД :

PostgreSQL SSD vs HDD - why is there no difference in insert performance?

If you're running it on an enterprise level server (e.g. HP Proliant or similar) then there's a good chance that that writes to the HDDs are extremely fast because they're actually being written to a non volatile write cache. Ironic because writes to SSDs are much slower than reads so SSDs typically have their own RAM based write cache.

Показать полностью 4
[моё] Postgresql Субд Производительность Мониторинг Тестирование Длиннопост
4
kznalp
kznalp
Лига Новых Технологий
Серия СУБД PostgreSQL

Производительность PostgreSQL для разных ОС - часть 3⁠⁠

10 месяцев назад

Взято с основного технического канала Postgres DBA

Продолжение цикла статей о статистическом анализе результатов нагрузочного тестирования СУБД PostgreSQL :

  • Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО

  • Сравнение производительности PostgreSQL

  • Производительность PostgreSQL для разных ОС - часть 1

  • Производительность PostgreSQL для разных ОС - часть 2

Часть 3 - Сценарий нагрузочного тестирования "Heavyweight"

Нужно выбирать

Нужно выбирать

Задача эксперимента

Необходимо провести количественный анализ влияния версии Linux на производительность СУБД для разных дистрибутивов Linux : OS-1 и OS-2 .

СУБД расположены на разных виртуальных машинах. Гипервизор - один. Конфигурация файловых систем - одинаковая. Ресурсы хоста - одинаковые.

Сценарий "Heavyweight"

Тестовый запрос состоит только из выражений SELECT с использованием JOIN ,ORDER BY и математических функций.

Все блоки использующиеся в запросе - находятся в распределенной области.

Для создания нагрузки используется pgbench.

Количество сессий к СУБД растет экспоненциально для каждого прохода теста.

Производительность СУБД

До 78 соединений - разница в производительности не более 3%

До 78 соединений - разница в производительности не более 3%

Резкий рост относительной разницы производительности после 76 соединений

Резкий рост относительной разницы производительности после 76 соединений

До 78 соединений - разница в производительности практически отсутствует.

При высокой нагрузке - OS-2 существенно производительнее.

Время выполнения тестового запроса

Явная аномалия в районе 78 соединений

Явная аномалия в районе 78 соединений

Имеется аномалия значений

Имеется аномалия значений

За исключением аномалии при 78 соединений, относительная разница времени выполнения не превышает 5%.

Итог

Для сценария "Heavyweight", при нагрузке свыше 78 сессий - производительность СУБД развернутой на ОС Linux версии OS-2 превосходит производительность СУБД развернутой на ОС Linux версии OS-1 более чем на 10%.

P.S. Аномальное значение при 78 сессиях нуждается в повторном эксперименте.

Показать полностью 5
[моё] Postgresql Субд Производительность Мониторинг Тестирование Длиннопост
5
kznalp
kznalp
Лига Новых Технологий
Серия СУБД PostgreSQL

Корреляционный анализ для определения причин деградации производительности СУБД PostgreSQL⁠⁠

10 месяцев назад

математическая статистика в целом не подходит для общего анализа и сравнения производительности СУБД.

Эпиграф

Чем же может оказаться полезной математическая статистика или комментарий к комментарию.

Тренды на график метрики производительности СУБД

Тренды на график метрики производительности СУБД

Активные соединения и утилизация CPU

Активные соединения и утилизация CPU

Для сглаживания данных используется медианное сглаживание:

  • Долгая скользящая: 1 час(красная линия).

  • Короткая скользящая: 10 минут(синяя линия).

  • Активные соединения и утилизация CPU: стандартные метрики Zabbix.

Как видно из графика - имеет место деградация производительности СУБД:

  1. Количество активных сессий растет, но производительность падает

  2. Утилизация CPU растет , но производительность падает

Ситуация, принципиально отличается от описанной в казалось бы похожих кейсах:

  1. CPU Utilization = 100%. Это проблема СУБД?

  2. CPU Utilization = 100%. Это проблема СУБД?

Поэтому и решаться данный инцидент будет по другому.

Использование статистического анализа

1.Выделение трендов на графике производительности

Выполняется тривиально, дополнительных инструментов не требуется.

  • 13:00 - 13:28 : Горизонтальный тренд - высокая производительность

  • 13:28 - 13:47 : Деградация производительности

  • 13:57 - 14:05 : Горизонтальный тренд - низкая производительность. Нагрузка на СУБД уменьшилась.

13:00 - 13:28 : Горизонтальный тренд - высокая производительность

Статистические показатели производительности СУБД

Рис.1. Статистические показатели горизонтального тренда 13:00-13:28

Рис.1. Статистические показатели горизонтального тренда 13:00-13:28

Прямая корреляция между количество активных сессий и производительностью СУБД . Или другими словами - чем выше нагрузка на СУБД , тем выше производительность.

Статистические показатели ожиданий СУБД - корреляция ожиданий и производительности СУБД

Рис.2. Корреляционный анализ ожиданий и производительности 13:00-13:28

Рис.2. Корреляционный анализ ожиданий и производительности 13:00-13:28

Количество пользовательских запросов по которым имеются события ожидания СУБД - минимально.

13:28 - 13:47 : Деградация производительности

Статистические показатели производительности СУБД

Рис.3. Статистические показатели нисходящего тренда 13:28 - 13:47

Рис.3. Статистические показатели нисходящего тренда 13:28 - 13:47

Сильная обратная корреляция - чем выше нагрузка на СУБД тем ниже производительность. Явный признак инцидента производительности СУБД

Статистические показатели ожиданий СУБД - корреляция ожиданий и производительности СУБД

Рис.4. Корреляционный анализ ожиданий и производительности СУБД нисходящего тренда 13:28 - 13:47

Рис.4. Корреляционный анализ ожиданий и производительности СУБД нисходящего тренда 13:28 - 13:47

Как видно из таблицы - количество ожиданий кардинально увеличилось. Явный признак - имеются серьезные проблемы с производительностью СУБД.

2.Определение наиболее значимой причины деградации производительности СУБД

Из Рис.4 видно, что наибольшая обратная корреляция между событиями ожидания и снижением производительности СУБД имеется для события LWLock / BufferMapping

Рис.5. Ожидание LWLock / BufferMapping

Рис.5. Ожидание LWLock / BufferMapping

Как видно - количество ожиданий менее чем за 20 минут - весьма существенно.

Итак, первый результат

Первой( но конечно не единственной) причиной деградации производительности СУБД в период 13:28 - 13:47 является - большое количество ожиданий LWLock / BufferMapping при выполнении пользовательских запросов.

Чуть подробнее об ожидании BufferMapping

Ожидание при связывании блока данных с буфером в пуле буферов.

Postgres Pro Enterprise : Документация: 16: 27.2. Система накопительной статистики : Компания Postgres Professional

LWLock - buffer_mapping

This event occurs when a session is waiting to associate a data block with a buffer in the shared buffer pool.

Context

The shared buffer pool is an PostgreSQL memory area that holds all pages that are or were being used by processes. When a process needs a page, it reads the page into the shared buffer pool. The shared_buffers parameter sets the shared buffer size and reserves a memory area to store the table and index pages. If you change this parameter, make sure to restart the database. For more information, see Shared Buffer Area.

The buffer_mapping wait event occurs in the following scenarios:

  • A process searches the buffer table for a page and acquires a shared buffer mapping lock.

  • A process loads a page into the buffer pool and acquires an exclusive buffer mapping lock.

  • A process removes a page from the pool and acquires an exclusive buffer mapping lock.

LWLock - buffer_mapping | Redrock Postgres Documentation (rockdata.net)

3. Определение запросов с максимальным количество ожиданий

Рис.6. Запросы с ожиданием LWLock / BufferMapping c количество более 100.

Рис.6. Запросы с ожиданием LWLock / BufferMapping c количество более 100.

Далее, дело техники, используя утилиту pgpro_pwr по queryid, находим проблемный запрос за период 13:30 - 13:50(снимки pgpro_pwr формируются каждые 10 минут).

Запрос передается разработчикам , для анализа .

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

Рис.7. Список ожиданий отсортированный по количеству пользовательских запросов.

Рис.7. Список ожиданий отсортированный по количеству пользовательских запросов.

Итог

Статистический анализ производительности СУБД позволяет подтвердить наличие деградации производительности не дожидаясь деградации на уровне приложения.

Корреляционный анализ ожиданий и производительности СУБД позволяет быстрее определить корневую причину снижения производительности СУБД и определить список проблемных пользовательских запросов.

P.S.

В настоящее время ведутся работы по разработке и тестированию новой версии инструментария по мониторингу и анализу производительности СУБД PostgreSQL - "Орешник".

Методология статистического анализа производительности СУБД PostgreSQL будет довольно существенно дополнена и доработана.

Показать полностью 9
[моё] Математика Тестирование Postgresql Субд Мониторинг Статистика Корреляция Длиннопост Ответ
13
kznalp
kznalp
Лига Новых Технологий
Серия СУБД PostgreSQL

Производительность PostgreSQL для разных ОС - часть 2⁠⁠

10 месяцев назад

Взято с основного технического канала Postgres DBA

Продолжение цикла статей о статистическом анализе результатов нагрузочного тестирования СУБД PostgreSQL :

  • Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО

  • Сравнение производительности PostgreSQL

  • Производительность PostgreSQL для разных ОС - часть 1

Часть 2 - Сценарий нагрузочного тестирования "OLTP"

Выбирай сердцем

Выбирай сердцем

Задача эксперимента

Необходимо провести количественный анализ влияния версии Linux на производительность СУБД для разных дистрибутивов Linux : OS-1 и OS-2 .

СУБД расположены на разных виртуальных машинах. Гипервизор - один. Конфигурация файловых систем - одинаковая. Ресурсы хоста - одинаковые.

Сценарий "OLTP"

Тестовый запрос состоит только из выражений SELECT - UPDATE.

Все блоки использующиеся в запросе - находятся в распределенной области.

Для создания нагрузки используется pgbench.

Количество сессий к СУБД растет экспоненциально для каждого прохода теста.

Производительность СУБД

Разница производительности от 5-9%

Разница производительности от 5-9%

Относительная разница производительности OS-1 и OS-2

Относительная разница производительности OS-1 и OS-2

Время выполнения тестового запроса

Разница времени выполнения тестового запроса от -5% до 7%

Разница времени выполнения тестового запроса от -5% до 7%

Относительная разница времени выполнения тестового запроса

Относительная разница времени выполнения тестового запроса

Итог

Для сценария "OLTP", при нагрузке до 111 сессий - производительность СУБД развернутой на ОС Linux версии OS-1 превосходит производительность СУБД развернутой на ОС Linux версии OS-2 на 5-9% .

Показать полностью 5
[моё] Postgresql Субд Производительность Мониторинг Тестирование Длиннопост
0
kznalp
kznalp
Лига Новых Технологий
Серия СУБД PostgreSQL

Производительность PostgreSQL для разных ОС - часть 1⁠⁠

10 месяцев назад

Взято с основного технического канала Postgres DBA

Продолжение цикла статей о статистическом анализе результатов нагрузочного тестирования СУБД PostgreSQL :

  • Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО

  • Сравнение производительности PostgreSQL

Часть 1 - сценарий нагрузочного тестирования "Select only"

Какой Linux выбрать ?

Какой Linux выбрать ?

Задача эксперимента

Необходимо провести количественный анализ влияния версии Linux на производительность СУБД для разных дистрибутивов Linux : OS-1 и OS-2 .

СУБД расположены на разных виртуальных машинах. Гипервизор - один. Конфигурация файловых систем - одинаковая. Ресурсы хоста - одинаковые.

Сценарий "Select only"

Тестовые запрос состоит только из выражения SELECT.

Все блоки использующиеся в запросе - находятся в распределенной области.

Для создания нагрузки используется pgbench.

Количество сессий к СУБД растет экспоненциально для каждого прохода теста.

Производительность СУБД

Разница производительности от 10 до 13%

Разница производительности от 10 до 13%

Относительная разница производительности OS-1 и OS-2

Относительная разница производительности OS-1 и OS-2

Время выполнения тестового запроса

Разница времени выполнения тестового запроса до 7%

Разница времени выполнения тестового запроса до 7%

Относительная разница времени выполнения тестового запроса

Относительная разница времени выполнения тестового запроса

Итог

Для сценария "Select only", при нагрузке до 111 сессий - производительность СУБД развернутой на ОС Linux версии OS-1 превосходит производительность СУБД развернутой на ОС Linux версии OS-2 не менее чем на 10% .

Показать полностью 5
[моё] Postgresql Субд Производительность Мониторинг Тестирование Длиннопост
14
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии