powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
9 сообщений из 9, страница 1 из 1
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39318893
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linux Ubunty, PostgreSQL 9.3

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE chunks (
    id integer NOT NULL,
    series_id integer,
    start_time bigint NOT NULL,
    data bytea
); 

CREATE UNIQUE INDEX chunks_start_time ON chunks USING btree (series_id, start_time);



Данные достаются запросом:

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'ах
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39318961
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

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

я бы из запроса сделал SQL--language храникму -- она бы работала как "сервер сайд препаред" независимо от типа пула и настроек. заодно входная типизация была б ничотак. ( для уверенности , что пж не занимается конвертацией данных , а бежит по индексу).

как отдаёт/принимает жаба bytea в byte[] -- никогда не интересовало. и проблем не было. вот для передачи в pg bytea[]--параметра пришлось руцками на стороне жабы класть в строку hex и клеить строковое представление массива.
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39318970
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqкаким пулом ? жабовским ?
Да

Вывел в лог isUseServerPrepare() после небольшого прогрева - всегда true. Т.ч. должны быть отпарсенные
qwwqбы из запроса сделал SQL--language храникму -- она бы работала как "сервер сайд препаред" независимо от типа пула и настроек.
Хорошая идея. Как не парадоксально, мне в голову не приходила.

Возможно попытаюсь, о результатах отпишусь.(это не быстро, т.к. нужно вфигачить патч в приложение+развернуть на серверах)

Но вопрос по Subj остатеся. Т.к. даже в случае, если запросы не prepared, не очень понятно, почему такое потребление CPU. Оно реально какое-то огромное.
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39319058
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39319873
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 не так уж просто
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39319892
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk6)ssl on или off на сервере?

ON
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39320174
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk7)поставьте pg_stat_statements и покажите что он показывает в топовых запросах по времени.

--
Maxim Boguk
www.postgresql-consulting.ru

СПАСИБО.
Ларчик просто открывался. CPU жрал совсем другой запрос, правда странно, что в active statement он ни разу не показался. Когда пофиксили (добавили индекс) - упало с 60% до 10-12% + скорость приложения выросла на 30%.
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39320200
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 создает - критичны по какой то причине).
...
Рейтинг: 0 / 0
Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
    #39321467
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukLeonid Kudryavtsevпропущено...


СПАСИБО.
Ларчик просто открывался. CPU жрал совсем другой запрос, правда странно, что в active statement он ни разу не показался. Когда пофиксили (добавили индекс) - упало с 60% до 10-12% + скорость приложения выросла на 30%.

Не за что.
Вообще pg_stat_statements должен быть включен на любой базе всегда кроме случая когда приложения 100 лет назад вылизано и никаки правок никогда не предвидится (и те 1-5% overhead что pg_stat_statements создает - критичны по какой то причине).

Когда у вас уже сделают AWR)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Непонятно огромное потребление CPU у PostgreSQL, как отмониторить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]