Size: a a a

pgsql – PostgreSQL

2020 August 09

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
Вопро пример запроса с ошибкой
[2020-08-09 13:49:45.156 MSK] ERROR:  invalid memory alloc request size 12776525720924364720
[2020-08-09 13:49:45.156 MSK] STATEMENT:  INSERT INTO error_log (source, message, status) VALUES ($1, $2, $3)
Хмм... откуда такое в дампе (в норме, там вообще INSERT-ов нет)?
Как Вы его сделали и т.п.?
Какая это полная версия PostgreSQL?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
но не факт, что это конкретно этот запрос виноват. любой запрос после сбоя даст
ERROR:  invalid memory alloc request size 12776525720924364720
Т.е. Вы можете потом в psql подключиться и на любой запрос получите вот это?
источник

И

Иван in pgsql – PostgreSQL
это не при развертке. При развертке дампа все нормально. Это уже после подключения приложения возникают проблемы. Когда приложение делает запросы. буду смотреть конкретные запросы, что вызывает. Интересовал момент именно однозначности ошибки, т.к. находил на просторах интернета советы в стиле *битый дамп, развернул по новой и все взлетело*. В моем случае это не помогло. Да и не верю я как-то в это уже, т.к. дамп в sql формате. По факту - та же вставка строк, проблемы были бы на этапе развертки дампа, думаю.
источник

И

Иван in pgsql – PostgreSQL
Yaroslav Schekin
Т.е. Вы можете потом в psql подключиться и на любой запрос получите вот это?
именно
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
именно
Так сделайте \errverbose и посмотрите, откуда она выбрасывается.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
это не при развертке. При развертке дампа все нормально. Это уже после подключения приложения возникают проблемы. Когда приложение делает запросы. буду смотреть конкретные запросы, что вызывает. Интересовал момент именно однозначности ошибки, т.к. находил на просторах интернета советы в стиле *битый дамп, развернул по новой и все взлетело*. В моем случае это не помогло. Да и не верю я как-то в это уже, т.к. дамп в sql формате. По факту - та же вставка строк, проблемы были бы на этапе развертки дампа, думаю.
> . Да и не верю я как-то в это уже, т.к. дамп в sql формате.

Да любой дамп — это SQL, по сути.
Кстати, "битость" дампов, по идее, может быть только в том, что при декомпрессии получается какая-то ерунда, если файл побился почему-то. Но это можно проверить, попытавшись его развернуть в SQL.
источник

И

Иван in pgsql – PostgreSQL
pg 12.3
db1=# select 1;
ERROR:  invalid memory alloc request size 12776525720924364720
db1=# \errverbose
ERROR:  XX000: invalid memory alloc request size 12776525720924364720
LOCATION:  palloc, mcxt.c:934
источник

И

Иван in pgsql – PostgreSQL
Yaroslav Schekin
> . Да и не верю я как-то в это уже, т.к. дамп в sql формате.

Да любой дамп — это SQL, по сути.
Кстати, "битость" дампов, по идее, может быть только в том, что при декомпрессии получается какая-то ерунда, если файл побился почему-то. Но это можно проверить, попытавшись его развернуть в SQL.
дамп развернул. сжатие было в gz. Но раз смог развернуть - значит все путем, как я понимаю.
источник

И

Иван in pgsql – PostgreSQL
про  \errverbose не знал, спасибо, интересно.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
дамп развернул. сжатие было в gz. Но раз смог развернуть - значит все путем, как я понимаю.
Должно быть, да. Да и вообще, разворачивание дампа — просто выполнение последовательности SQL statements, и обязано к таким эффектам не приводить. :(
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
pg 12.3
db1=# select 1;
ERROR:  invalid memory alloc request size 12776525720924364720
db1=# \errverbose
ERROR:  XX000: invalid memory alloc request size 12776525720924364720
LOCATION:  palloc, mcxt.c:934
Жёстко. А если к любой другой базе подключиться?
А в логах PostgreSQL ошибок нет (в смысле... их там наверняка куча, найти бы первые, связанные с этой проблемой)?
А этот кластер возможно перезапустить, на всякий случай?
источник

И

Иван in pgsql – PostgreSQL
к какой бы базе не подключился, выполнение любого запроса приводит к подобной ошибке. Помогает только перезапуск сервера.
источник

И

Иван in pgsql – PostgreSQL
уже пробовал полностью сносить кластер, инициализировать снова и снова разворачивать базу - не помогло.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
к какой бы базе не подключился, выполнение любого запроса приводит к подобной ошибке. Помогает только перезапуск сервера.
А точно у Вас проблем с "железом" нет? Потому что иначе Вы почти наверняка наткнулись на bug PostgreSQL.
источник

И

Иван in pgsql – PostgreSQL
Yaroslav Schekin
А точно у Вас проблем с "железом" нет? Потому что иначе Вы почти наверняка наткнулись на bug PostgreSQL.
По поводу железа не могу точно сказать. Именно поэтому и стал сюда писать по поводу возможной природы ошибки)
источник

И

Иван in pgsql – PostgreSQL
собрал на еще одной ноде такую же базу - в понедельник переключим на нее приложение - проверим. думаю, если на ней все будет хорошо - значит проблема действительно кроется в железе.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
уже пробовал полностью сносить кластер, инициализировать снова и снова разворачивать базу - не помогло.
А если на другом сервере (где установлен PostgreSQL той же версии) попробовать?

> По поводу железа не могу точно сказать.

Вот я бы сначала в этом направлении поискал, т.к. поведение какое-то совсем странное (не очень похоже на bug).
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
собрал на еще одной ноде такую же базу - в понедельник переключим на нее приложение - проверим. думаю, если на ней все будет хорошо - значит проблема действительно кроется в железе.
Я, кстати, как-то видел что-то подобное — в том случае, насколько я помню, RAM и диски оказались исправными, а "вылетело" что-то на motherboard, видимо (там не стали копаться / разбираться) — стали сыпаться "invalid memory alloc request size",  "левые" ошибки при запросах, потом ошибки контрольных сумм... очень странно это выглядело, в общем. ;)
(Я так подумал, что какие-то биты изредка "бились" при передаче по какой-то шине.)
источник

И

Иван in pgsql – PostgreSQL
есть еще один вопросик, относящейся к другой проблеме и другому серверу) он более общий.
Есть ли какая-то методика нахождения причины регулярного падения базы? Нашли закономерность при падении, но не понимаю, как или чем копнуть глубже. Может есть какие-то статьи на примете полезные  у вас?
Проблема c сигналом segfault 11.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
есть еще один вопросик, относящейся к другой проблеме и другому серверу) он более общий.
Есть ли какая-то методика нахождения причины регулярного падения базы? Нашли закономерность при падении, но не понимаю, как или чем копнуть глубже. Может есть какие-то статьи на примете полезные  у вас?
Проблема c сигналом segfault 11.
Опять-таки, начните с логов PostgreSQL.
А какая закономерность-то?
источник