Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Linux Ubunty, PostgreSQL 9.3 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Данные достаются запросом: SELECT data, start_time FROM chunks WHERE series_id = ? AND start_time >= ? AND start_time <= ? order by start_time ASC План хороший, время выполнения запросов, когда данные в shared_buffers 0.5-2 ms. ПРОБЛЕМА: PostgreSQL потребляет огромное кол-во CPU. По факту, прикладная система на Java забирающая данные и работающая на 3 процах, загружает на 70% 6-и процессорную машину с PostgreSQL. В чем может быть проблема, как отмониторить потребление CPU PostgreSQL ? Соединения берутся из пула соединений, поэтому (надеюсь), все JDBC запросы должны быть server side prepared. Shared_buffers достаточно небольшой (1 Gb), т.ч. пока подозреваю потерю CPU на обращение к cache OS (по факту 5-7 Gb). Но все равно, потребление CPU просто огромное до безобразия. ПРОБЛЕМА N2. Как я понимаю, тип данных bytea передается по сети как hex ((( Кто как с этим борется? Трафик же по сети в два раза больше, чем нужно ((( Как я понимаю, переход на стандартные BLOB'ы тоже не вариант, т.к. выиграем в трафике, проиграем в round trip'ах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 17:44 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, каким пулом ? жабовским ? а то если пжбаунсер -- то jdbc параметр отвечающий за сервер--сайд препаренье приходится отключать (сам не пользовал -- писал свой пул, все соединения со своим набором кешированных в жабе препаредов). я бы из запроса сделал SQL--language храникму -- она бы работала как "сервер сайд препаред" независимо от типа пула и настроек. заодно входная типизация была б ничотак. ( для уверенности , что пж не занимается конвертацией данных , а бежит по индексу). как отдаёт/принимает жаба bytea в byte[] -- никогда не интересовало. и проблем не было. вот для передачи в pg bytea[]--параметра пришлось руцками на стороне жабы класть в строку hex и клеить строковое представление массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 20:45 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
qwwqкаким пулом ? жабовским ? Да Вывел в лог isUseServerPrepare() после небольшого прогрева - всегда true. Т.ч. должны быть отпарсенные qwwqбы из запроса сделал SQL--language храникму -- она бы работала как "сервер сайд препаред" независимо от типа пула и настроек. Хорошая идея. Как не парадоксально, мне в голову не приходила. Возможно попытаюсь, о результатах отпишусь.(это не быстро, т.к. нужно вфигачить патч в приложение+развернуть на серверах) Но вопрос по Subj остатеся. Т.к. даже в случае, если запросы не prepared, не очень понятно, почему такое потребление CPU. Оно реально какое-то огромное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 21:02 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevqwwqкаким пулом ? жабовским ? Да Вывел в лог isUseServerPrepare() после небольшого прогрева - всегда true. Т.ч. должны быть отпарсенные qwwqбы из запроса сделал SQL--language храникму -- она бы работала как "сервер сайд препаред" независимо от типа пула и настроек. Хорошая идея. Как не парадоксально, мне в голову не приходила. Возможно попытаюсь, о результатах отпишусь.(это не быстро, т.к. нужно вфигачить патч в приложение+развернуть на серверах) Но вопрос по Subj остатеся. Т.к. даже в случае, если запросы не prepared, не очень понятно, почему такое потребление CPU. Оно реально какое-то огромное. Давайте разбираться. 1)сколько запросов в секунду идет на сервер? 2)сколько строк в секунду в среднем сервер отдает? 3)какой средний размер этой самой Bytea? 4)какой сетевой траффик с базы (сервера) получается? 5)машина - реальный сервер или очередная недо-виртуалка? 6)ssl on или off на сервере? 7)поставьте pg_stat_statements и покажите что он показывает в топовых запросах по времени. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2016, 08:13 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk3)какой средний размер этой самой Bytea? 4)какой сетевой траффик с базы (сервера) получается? Около 50 - 70 Kb на запись Сетевой трафик max 55.8 MBps. [quot Maxim Boguk] 5)машина - реальный сервер или очередная недо-виртуалка? И то и то виртуалка на одном хосте.Вроде что-то типа KVM (не уточнял) Плюс сам PostgreSQL и приложение на Java развернуты в виртуалке в docker container'е. Maxim Boguk7)поставьте pg_stat_statements и покажите что он показывает в топовых запросах по времени. Завтра постараюсь поставить и ответить на другие вопросы. === Мне пока не нравятся след вещи: 1. Hex кодировка при передаче bytea между СУБД и клиентом. Я так понимаю, это врожденная травма PostgreSQL ((( Может ли она давать overhead по CPU? Можно ли ее как-то исправить? 2. Как я понимаю, TOAST по умолчанию пытается компрессировать данные. Насколько сильно это сказывается на CPU ? БД (табличка) > 170 Gb т.ч. выдать Alter table не так уж просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 18:47 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk6)ssl on или off на сервере? ON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2016, 19:26 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk7)поставьте pg_stat_statements и покажите что он показывает в топовых запросах по времени. -- Maxim Boguk www.postgresql-consulting.ru СПАСИБО. Ларчик просто открывался. CPU жрал совсем другой запрос, правда странно, что в active statement он ни разу не показался. Когда пофиксили (добавили индекс) - упало с 60% до 10-12% + скорость приложения выросла на 30%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 11:38 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevMaxim Boguk7)поставьте pg_stat_statements и покажите что он показывает в топовых запросах по времени. -- Maxim Boguk www.postgresql-consulting.ru СПАСИБО. Ларчик просто открывался. CPU жрал совсем другой запрос, правда странно, что в active statement он ни разу не показался. Когда пофиксили (добавили индекс) - упало с 60% до 10-12% + скорость приложения выросла на 30%. Не за что. Вообще pg_stat_statements должен быть включен на любой базе всегда кроме случая когда приложения 100 лет назад вылизано и никаки правок никогда не предвидится (и те 1-5% overhead что pg_stat_statements создает - критичны по какой то причине). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2016, 12:06 |
|
||
|
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
|
|||
|---|---|---|---|
|
#18+
Maxim BogukLeonid Kudryavtsevпропущено... СПАСИБО. Ларчик просто открывался. CPU жрал совсем другой запрос, правда странно, что в active statement он ни разу не показался. Когда пофиксили (добавили индекс) - упало с 60% до 10-12% + скорость приложения выросла на 30%. Не за что. Вообще pg_stat_statements должен быть включен на любой базе всегда кроме случая когда приложения 100 лет назад вылизано и никаки правок никогда не предвидится (и те 1-5% overhead что pg_stat_statements создает - критичны по какой то причине). Когда у вас уже сделают AWR) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2016, 23:38 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=85&tid=1996965]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 162ms |

| 0 / 0 |
