172 похожих чатов

Коллеги, добрый день. Postgres запущен в докере, к которому примонтирован

вольюм для хранения БД. Сам же вольюм хранится в RBD вольюме цефа (кластер из SSD дисков). Известно, что к БД делаются только INSERT запросы. Но если смотреть на данные в iotop, то видно, как раз в 20 секунд, процесс postgres EXECUTE производит rops ы ( до нескольких десятков мегабайт доходит). Далее эта read-активность сходит до нескольких килобайт в секунду.
Чем может быть обусловлена такая ситуация?
Моя гипотеза - чтение индекса, но вряд ли.

10 ответов

25 просмотров

Ну, должэн жэ он когда-то это всё записывать, а потом перепаковывать. ЗЫ Просто не храните бд в ceph. На худой конец, если очень нужно — ну, смените postgres на sqlite.

Setplus-Mac Автор вопроса
Ilya Anfimov
Ну, должэн жэ он когда-то это всё записывать, а по...

Так запись - это write опсы должны быть, а тут именно скачки read опсов.

Setplus Mac
Так запись - это write опсы должны быть, а тут име...

Да я жэ говорю — вакуум как минимум. Вообще, можно разбираться, как минимум — но в принцыпе имеет право. И он на это рассчитан.

Setplus-Mac Автор вопроса
Ilya Anfimov
Да я жэ говорю — вакуум как минимум. Вообще, можн...

А разве в таком случае этот процесс не должен называться postgres autovacuum ?

Боле всего похоже на автовакуум. А какой размер базы? В память она влезает? Надо понимать, что вставка в индексы требует не только записи, но и чтения. Ведь для того чтобы найти позицию в дереве, надо спуститься от корня вниз. И если таблица большая и индекс не помещается целиком в память, но надо будет читать страницы с диска. Не понятно только почему это происходит периодически раз в 20 секунд. Поэтому это всё таки больше похоже на какую-то бэкграундную активность, и скорее всего - это вакуум. Но тогда не понятно, почему iotop инит в этом EXECUTE. А там точно в инсёртах никакие подзапросы не используются?

Setplus-Mac Автор вопроса
Konstantin Knizhnik
Боле всего похоже на автовакуум. А какой размер ба...

Размер базы — 458GB, полностью влезает (там максимум 1.8 TB). Используются только инсёрты, это точно.

Setplus Mac
Размер базы — 458GB, полностью влезает (там максим...

А pid процесса-читателя всегда один тот же?Или разные? Есть ли возможность приконнектиться к нему отладчиком?

Setplus-Mac Автор вопроса
Setplus Mac
Размер базы — 458GB, полностью влезает (там максим...

Что значит "максимум 1.8 ТБ"? Вы free посмотреть внутри контэйнера можэте? И да, это, на самом деле, опять "прекратите!" Если вам под базу нужэн сервак мощнее среднего (а 1.8ТБ RAM — это пока ещё заметно мощнее среднего), то пытаться пихнуть его в контэйнер — это растрата ресурсов, в том числе на администрирование. Всё финита, у вас нет возможности таскать этот контэйнер между виртуалками, вы на каждую реплику должны выделять физическую жэлезку, недешёвую. После этого танцы с оркестрацыей — это откровенное усложнение работы.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта