|
|
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Добрый день Столкнулись со следующей проблемой. Таблица pgq.subscription распухает. Автовакуум не всегда помогает. Вакум фулл так же не может собрать мусор. INFO: "subscription": found 0 removable, 677525 nonremovable row versions in 5698 out of 5701 pages DETAIL: 677492 dead row versions cannot be removed yet. Я не понимаю почему вакум фулл не может собрать мусор? На сколько я понимаю он должен установить эксклюзивную блокировку, дождаться всех и почистить. Как определить из-за чего такое происходит? Что можно сделать? Вроде бы нет таких длинных транзакций. Единственное что есть, очень много обращений на чтение с нашей стороны к этой таблице, ну и наверно на запись со стороны pgq. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 09:28:51 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
PostgreSQL 9.3.4 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (Gentoo 4.6.3 p1.13, pie-0.5.2) 4.6.3, 64-bit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 09:39:03 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Проблемы начались при увеличении нагрузки на pgq - добавление очередей/обработчиков и londsite. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 10:19:39 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiy, а пробовали остановить pgqd перед вакуумом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 10:19:58 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
daevy, Сегодня нет, ночью мусор сам почистился. Хотелось бы как то штатно проблему решить без хаков. Интересует причины и что можно сделать. Пока причины не понятны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 10:42:06 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiydaevy, Сегодня нет, ночью мусор сам почистился. Хотелось бы как то штатно проблему решить без хаков. Интересует причины и что можно сделать. Пока причины не понятны. Причины совершенно очевидны - длинная открытая транзакция которая может видеть эти ваши удаленные строки так как была начата до операции удаления. Оставлять открытые транзакции часами и не иметь их отстрела или хотябы мониторинга - надежный способ сделать postgresql очень больно. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 12:17:06 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Да, у нас были такие предположения. кроме такого запроса чем еще можно помониторить длинные транзакции? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Есть ли возможность определить какая именно транзакция/сессия мешает собрать мусор по конкретной таблице/индексу? Разве vacuum full не должен ждать пока закончится транзакция? От длинных транзакций избавляемся потихоньку. Что можно сделать как временное решение пока нет возможности избавиться от всех долгих транзакций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 13:15:27 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
avtovacuum идущий на другой таблице, с 10 утра, так же является помехой да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 13:17:47 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
нашел такую полезную утилиту http://bucardo.org/check_postgres/check_postgres.pl.html#txn_time ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 13:57:27 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
>>Кроме такого запроса чем еще можно помониторить длинные транзакции? а чем запрос то плох? я бы еще добавил туда в select list now()-xact_start as ts_age и order by xact_start чтобы в верху видеть главных виновников >>Есть ли возможность определить какая именно транзакция/сессия мешает собрать мусор по конкретной таблице/индексу? Любая/все транзакции. А точнее любая открытая транзакция не дает удалить мусор из таблицы который образовался после старта этой самой транзакции так как это не мусор а данные с которыми она может работать и по этому удалять их нельзя. >>Разве vacuum full не должен ждать пока закончится транзакция? Транзакция которая с конкретной вашей таблицей работает - да должен (изза блокировок) а остальные ждать нет не должен. >>Что можно сделать как временное решение пока нет возможности избавиться от всех долгих транзакций? 1)отстреливать их кроном чем то типа * * * * * psql -d postgres -t -c "SELECT pg_terminate_backend(pid),now(),now()-xact_start as duration,* from pg_stat_activity where (now() - pg_stat_activity.xact_start) > '5 min'::interval and usename NOT IN ('postgres')" заодно сразу выясните какой код и где более длинные транзакции держит и будет повод его исправить оперативно... или 2)использовать pgcompacttable ( https://github.com/PostgreSQL-Consulting/pgcompacttable ), он во всяком случае не требует блокировок таблиц на время сжатия и вообще сильно более вежливый в работе и никому в процессе работы не мешает. или 3)мучаться пока код не причешете --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 15:27:51 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, спасибо за ответы. это совпадает с моими представлениями. А можно в двух словах сравнение pgcompacttable с pgcompactor? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 20:13:23 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiy, > INFO: "subscription": found 0 removable, 677525 nonremovable row versions in 5698 out of 5701 pages > DETAIL: 677492 dead row versions cannot be removed yet. у вас 5701 * 8KB размер таблицы -- это 40 MB -- это же совсем мало, что вас смущает то? далее. сколько у вас очередей и консумеров, как вы их создаёте, по какому принципу? включен ли автовакуум, правили ли его настройки? у меня, например, в базе есть несколько очередей и несколько консумеров, вся таблица subscription ~ 10 строк, и весит 3MB. но если будет висеть транзакция на сутки -- думаю, тоже может вырасти раз в 10ть, а то и больше. длинные транзакции плохо, да! -- > avtovacuum идущий на другой таблице, с 10 утра, так же является помехой да? нет, он ни при чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 20:15:51 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
ArtemiyMaxim Boguk, спасибо за ответы. это совпадает с моими представлениями. А можно в двух словах сравнение pgcompacttable с pgcompactor? форк... по сути одинаковые... у pgcompacttable убрана куча лишних опций и упрощено благодаря этому код сильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2014, 20:43:04 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
>> avtovacuum идущий на другой таблице, с 10 утра, так же является помехой да? > нет, он ни при чем. все таки причем или нет? он же выполняется в рамках обычной транзакции, разве нет? по поводу бд. система большая, очередей и подписчиков много, много событий. проблема в том что когда скапливается мусор, меняется план и запрос выборки из очереди или получения статуса подписчиков занимает по 1,5 сек, когда обычно 15 мс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 05:12:49 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiy, > все таки причем или нет? он же выполняется в рамках обычной транзакции, разве нет? нет. там нету "обычной транзакции". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 18:30:08 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiy, > выборки из очереди или получения статуса подписчиков занимает по 1,5 сек, когда обычно 15 мс. "выборки из очереди" скорее всего дело не в распухшей таблице, а в кол-ве событий. вы уверены, что точно локализовали проблему? > меняется план и запрос выборки из очереди какой план? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 18:32:45 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Misha Tyurin, Меняется план внутренних запросов pgq, которые в хранимках. Можете подробнее объяснить про "не обычную транзакцию" ? All, Есть еще мнения по автовакууму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 20:24:27 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiy, > план внутренних запросов pgq какой из планов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 20:29:18 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Misha Tyurin, Точно не помню, когда были тормоза разбирался и видел не верные планы. В хранимке get_consumer_info. Съезжают планы, в которых участвует таблица pgq.subscribers, т.к. постгрес считает что в ней 600 к записей, а там их 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2014, 21:23:34 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Artemiy, > Можете подробнее объяснить про "не обычную транзакцию" ? ух, какой вы дотошный. себя узнаю. там код довольно более хитрый. часть механизмов, от транзакций оставлено, часть похакано. мой коллега, Ёш, нашел точные ссылки: http://doxygen.postgresql.org/vacuum_8c_source.html#l01082 Код: plaintext 1. 2. 3. 4. 5. 6. 7. а тут собственно и игонорим http://doxygen.postgresql.org/procarray_8c_source.html#l01205 Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 19:36:11 |
|
||
|
Не собирается мусор, распухает таблица
|
|||
|---|---|---|---|
|
#18+
Misha TyurinArtemiy, > Можете подробнее объяснить про "не обычную транзакцию" ? ух, какой вы дотошный. себя узнаю. там код довольно более хитрый. часть механизмов, от транзакций оставлено, часть похакано. мой коллега, Ёш, нашел точные ссылки: http://doxygen.postgresql.org/vacuum_8c_source.html#l01082 Код: plaintext 1. 2. 3. 4. 5. 6. 7. а тут собственно и игонорим http://doxygen.postgresql.org/procarray_8c_source.html#l01205 Код: plaintext 1. 2. полезная информация... я подозревал что так и есть но до уровня кода не залезал в этой части. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2014, 19:56:09 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38747470&tid=1998486]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 499ms |

| 0 / 0 |
