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

Привет. Друзья-коллеги, подскажите вот такой момент. С недавнего времени приложение

под нагрузочными тестами начало класть СУБД - плодятся idle, постепенно выедается память и в итоге oom-killer убивает постгресовый процесс. Если посмотреть, что там исполнялось, то видно, что все "лишние" idle в состоянии rollback. Причем разработчики поясняют, что rollback у них - норма и им они завершают все read-only тразнзакции 🤨 Типа изменений же не было, зачем коммит? Моя думать, что сие не true, но непонятно, как гуглу сформулировать запрос, чтобы понять. Спрашиваю у людей )

19 ответов

6 просмотров

Да нет разницы как завершать. Просто подключение надо закрывать

Alexander-Cheremukhin Автор вопроса
Konstantin Zaitsev
Да нет разницы как завершать. Просто подключение н...

ок. спасибо. С завершением тоже неочевидно. На стороне приложения выделенный пул соединений не растет. Выделено 50 коннектов, в него упирается и все. Дальше не плодится. Растет только на стороне субд. Может быть так, что в рамках этих 50-ти открываются постоянно новые на стороне субд и не закрываются?

Дело не в idle и не в rollback

Alexander Cheremukhin
ок. спасибо. С завершением тоже неочевидно. На сто...

Да же не знаю что на стороне СУБД может открывать, только если dblink какой на себя для автономных транзакций

> плодятся idle, постепенно выедается память В норме этого не должно быть. Какая версия PostgreSQL (SELECT version();)? И как и чем "выедается память"? > и в итоге oom-killer убивает постгресовый процесс может быть, эти "тесты" делают что-то нестандартное? Или, возможно, это обычное "убивай непричастных" поведение OOM killer? ;) > Моя думать, что сие не true Отчасти это так — но эта часть, в основном, теоретическая (состоит в том, что никаким данным, полученным из откаченной транзакции, "снаружи" нельзя доверять — но на практике этим PostgreSQL почти не пользуется). И к таким эффектам отношения не имеет.

Там пулер держит соединения.

Роман Жарков
Там пулер держит соединения.

И пусть держит. В норме это как минимум не имеет значения, а обычно только улучшает ситуацию.

Скорее всего у вас лимит коннекшинов, а автоматизаторы так хороши в коде что не знают как переиспользовать коннекшин и под каждый тестик создают новый Простое решение, постучать по головке автоматизаторам

Տ𝖊𝖗𝖌乇y
Скорее всего у вас лимит коннекшинов, а автоматиза...

Лимит не приводит к oom, но в целом как то так да

>Моя думать, что сие не true, Зря.

Alexander-Cheremukhin Автор вопроса
Տ𝖊𝖗𝖌乇y
Скорее всего у вас лимит коннекшинов, а автоматиза...

после танцев с бубном очевидность пропала окончательно ) Проблема только в debian(11,12). Аналогичные машины по дискам, цпу, памяти и настройкам постгреса дают разные результаты. В Centos7 держит нагрузку, в дебиан падает

Alexander Cheremukhin
после танцев с бубном очевидность пропала окончате...

Так что Вы сделали-то, конкретно (и с какими результатами)? И какая сейчас ситуация?

Alexander-Cheremukhin Автор вопроса
Alexander-Cheremukhin Автор вопроса
Yaroslav Schekin
Так что Вы сделали-то, конкретно (и с какими резул...

взяли 2 одинаковые ВМ, из стандартных настроек поправили только shared_buffers. На нагрузочном тесте центос держит нагрузку стабильно, на дебиан через пару минут начинает есть память и падает

Alexander Cheremukhin
взяли 2 одинаковые ВМ, из стандартных настроек поп...

Это неконкретное описание, извините. Что (какой процесс(ы)) начинает "есть память", как Вы это видите (каким инструментов), что в логах OS и PostgreSQL, когда "падает"? И да, Вы PostgreSQL-то обновили? ;)

Alexander Cheremukhin
угу. До 14.9. В логах:

Показывайте тексты текстом. И этого недостаточно, правда — всё остальное нужно.

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта