Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Поиск бутылочного горлышка  [new]
flashgun
Member

Откуда:
Сообщений: 18
Братцы, мозг сломал, неделю уже думаю: дать больше памяти постгессу (64Гб -> 256 Гб), при этом потеряв в скорости диска NVMe->SATA SSD и немного в скорости проца, или добавить дисков NVMe (сейчас 2 в страйпе, а можно поставить 4), при этом памяти останется 64 Гб?

База используется для аналитических запросов. Размер базы 670 гиг, прирастает примерно гиг в день.
Данные хранятся на ZFS со сжатием, коэффициент сжатия 3:1. Что происходит внутри базы, примерно понятно: много чтения с диска в случае full scan запросов. Смотрю на https://explain.tensor.ru/ , строю нужные индексы, слежу за неиспользуемыми индексами. Тем не менее, есть запросы, которые выполняются 3-5 минут. Если их сразу же повторить, время будет секунд 20-40, потому что будет hit в кеш.

Стою перед выбором:
- Ryzen 5 3600 на 64 Гб ОЗУ + 2 диска NVMe в страйпе (можно перейти на 4 диска)
- Intel E5-1650v3 на 256 Гб ОЗУ + 2 диска SATA SSD в страйпе

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

Понятно, что дать однозначный ответ невозможно, но хотя бы подскажите, куда посмотреть? pg_top, htop, iostat показывают сиюминутный срез, а мне бы понять, как оно в момент выполнения запроса?

Буду рад пояснить подробнее, если нужно.
3 ноя 21, 19:56    [22391766]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
Maxim Boguk
Member

Откуда: По разному.
Сообщений: 5022
flashgun
Братцы, мозг сломал, неделю уже думаю: дать больше памяти постгессу (64Гб -> 256 Гб), при этом потеряв в скорости диска NVMe->SATA SSD и немного в скорости проца, или добавить дисков NVMe (сейчас 2 в страйпе, а можно поставить 4), при этом памяти останется 64 Гб?

База используется для аналитических запросов. Размер базы 670 гиг, прирастает примерно гиг в день.
Данные хранятся на ZFS со сжатием, коэффициент сжатия 3:1. Что происходит внутри базы, примерно понятно: много чтения с диска в случае full scan запросов. Смотрю на https://explain.tensor.ru/ , строю нужные индексы, слежу за неиспользуемыми индексами. Тем не менее, есть запросы, которые выполняются 3-5 минут. Если их сразу же повторить, время будет секунд 20-40, потому что будет hit в кеш.

Стою перед выбором:
- Ryzen 5 3600 на 64 Гб ОЗУ + 2 диска NVMe в страйпе (можно перейти на 4 диска)
- Intel E5-1650v3 на 256 Гб ОЗУ + 2 диска SATA SSD в страйпе

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

Понятно, что дать однозначный ответ невозможно, но хотя бы подскажите, куда посмотреть? pg_top, htop, iostat показывают сиюминутный срез, а мне бы понять, как оно в момент выполнения запроса?

Буду рад пояснить подробнее, если нужно.


Надо не сиюминутные срезы а статистику с графиками смотреть.
okmeter поставьте и посмотрите что более загружено.

Предсказать в вашем случае что буде быстрее - невозможно, потому что понять какая часть данных влезет в кеш на 256GB а какая нет - не возможно.
Только тестировать.

PS: zfs плохая fs для базы... слишком она умная и со своими механизмами кеширования...

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
3 ноя 21, 21:12    [22391788]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
flashgun
Member

Откуда:
Сообщений: 18
Maxim Boguk

Надо не сиюминутные срезы а статистику с графиками смотреть.
okmeter поставьте и посмотрите что более загружено.


Спасибо за наводку! okmeter для меня дороговат, поставил пока munin, понаблюдаю.

Maxim Boguk

PS: zfs плохая fs для базы... слишком она умная и со своими механизмами кеширования...

А что делать, у меня иначе база очень скоро не влезет. К тому же я решил, что сжатие повысит скорость чтения с диска, так как физически читать придётся в три раза меньше.

Я и подумал поэтому, что если сервер залить оперативной памятью, пусть и ценой скорости проца и диска, то ему полегчает...
4 ноя 21, 03:35    [22391843]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
flashgun
Member

Откуда:
Сообщений: 18
flashgun
Спасибо за наводку! okmeter для меня дороговат, поставил пока munin, понаблюдаю.

Что-то munin меня озадачил. Если у кого-то есть время, посмотрите, буду благодарен комментариям:

https://xboxstat.ru/munin/www/

localhost.localdomain - та самая машина, на которой я хочу разогнать выполнение запросов. Это физический read-only слейв.
dignus.xboxstat.ru - мастер, где выполняются скрипты, наполняющие базу. Некоторые запросы он отправляет в слейв через dblink, чтобы не нагружать себя

Что вижу я: отсутствие проблем на интересующем меня хосте, зато вижу проблемы на мастере: занятость disk под сотню. При этом мастер меня как-то особо-то не беспокоил. Может, пора проактивно что-то предпринять?

А вот что не так в postgresql, не пойму. Может, надо за чем-то ещё следить?
12 ноя 21, 16:28    [22395191]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
Юниксберг
Member

Откуда:
Сообщений: 7
flashgun,
Однозначно могу рекомендовать закрыть сменить порт ssh. Что за событие было в пт около 18 часов ? Нагрузка на диски на самом деле большая, она же и ограничивает производительность. Почему линейно растет query length ? 39 зомби процессов, вы серьезно ?
20 ноя 21, 14:31    [22398309]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
flashgun
Member

Откуда:
Сообщений: 18
Юниксберг,

спасибо за вопросы!

ssh меня не сильно раздражает: вход без пароля, только по ключу, плюс fail2ban. Но вы правы, оставить порт открытым только для некоторых ip несложно, а безопасность хоста повысит заметно. (тем более вспоминая ту чудовищную историю десятилетней давности с генерацией ключей на debian)

По пятницам народ обычно начинает активно играть, и мои скрипты начинают лить в базу данные. Если говорить про конкретно эту пятницу, то я, вместо того, чтобы присоединиться к играющим, подбивал статистику по Forza Horizon 5, нагружая запросами slave-сервер. А на какой машине скачок вызвал настороженность?

На query length я тоже смотрел, но не понимаю, что это за параметр. Как переводится каждое из слов, знаю, но "длина запроса"? Или это "длительность"?

Зомби-процессы берутся из-за того, что у Xbox Live API есть некий механизм, который "подвешивает" состояние в "Established" на сколь угодно долгое время. В результате мне пришлось обвешать конструкцию вотч-догами, которые периодически отстреливают таких клиентов. Их (зомби) количество не должно расти, так они раз в сутки должны очищаться.
22 ноя 21, 17:01    [22399208]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
Юниксберг
Member

Откуда:
Сообщений: 7
flashgun
Юниксберг,

спасибо за вопросы!

ssh меня не сильно раздражает: вход без пароля, только по ключу, плюс fail2ban. Но вы правы, оставить порт открытым только для некоторых ip несложно, а безопасность хоста повысит заметно. (тем более вспоминая ту чудовищную историю десятилетней давности с генерацией ключей на debian)


Кроме безопасности это не сильно, но постоянно нагружает систему, которая и так тормозит.

flashgun

По пятницам народ обычно начинает активно играть, и мои скрипты начинают лить в базу данные. Если говорить про конкретно эту пятницу, то я, вместо того, чтобы присоединиться к играющим, подбивал статистику по Forza Horizon 5, нагружая запросами slave-сервер. А на какой машине скачок вызвал настороженность?

Диски очень загружены без запаса практически
https://xboxstat.ru/munin/www/xboxstat.ru/dignus.xboxstat.ru/diskstats_utilization/index.html

Сравините с https://xboxstat.ru/munin/www/localdomain/localhost.localdomain/diskstats_utilization/nvme0n1.html

Я бы стал на вашем месте смотреть в сторону увеличения производительности дисковой подсистемы на dignus.

flashgun

На query length я тоже смотрел, но не понимаю, что это за параметр. Как переводится каждое из слов, знаю, но "длина запроса"? Или это "длительность"?


Никогда толком не трогал мунин. https://github.com/munin-monitoring/munin/blob/master/plugins/node.d/postgres_querylength_
Могу взять смелость рекомендовать нормальную систему, а-ля zabbix или моднейший prometheus , а не мунин с последним релизом 2 года назад. Из докера все накатывается на ура. Излишне говорить, что сервер мониторинга не должен стоять на машине которую мониторит ;)
23 ноя 21, 19:09    [22399891]     Ответить | Цитировать Сообщить модератору
 Re: Поиск бутылочного горлышка  [new]
Maxim Boguk
Member

Откуда: По разному.
Сообщений: 5022
flashgun
Юниксберг,

спасибо за вопросы!

ssh меня не сильно раздражает: вход без пароля, только по ключу, плюс fail2ban. Но вы правы, оставить порт открытым только для некоторых ip несложно, а безопасность хоста повысит заметно. (тем более вспоминая ту чудовищную историю десятилетней давности с генерацией ключей на debian)

По пятницам народ обычно начинает активно играть, и мои скрипты начинают лить в базу данные. Если говорить про конкретно эту пятницу, то я, вместо того, чтобы присоединиться к играющим, подбивал статистику по Forza Horizon 5, нагружая запросами slave-сервер. А на какой машине скачок вызвал настороженность?

На query length я тоже смотрел, но не понимаю, что это за параметр. Как переводится каждое из слов, знаю, но "длина запроса"? Или это "длительность"?

Зомби-процессы берутся из-за того, что у Xbox Live API есть некий механизм, который "подвешивает" состояние в "Established" на сколь угодно долгое время. В результате мне пришлось обвешать конструкцию вотч-догами, которые периодически отстреливают таких клиентов. Их (зомби) количество не должно расти, так они раз в сутки должны очищаться.


Поставьте okmeter на триальный период бесплатный. И скорее всего всё будет видно.
Нормального open source мониторинга со всеми нужными метриками и графиками для pg ещё никто не сделал к сожалению (там ещё и метрик по 10000-20000 на хост выходит и их очень умно надо отрисовывать чтобы этим можно было пользоваться).

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 ноя 21, 19:41    [22399902]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить