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

Всем привет переношу достаточно нагруженный проект с виртуалки на опенвз на

виртуалку под квм
железо хоста своё

конфиг виртуалки идентичен, сервер в остальном пуст, диски были сас, стали ссд

был старый дебиан, стала новая убунта
эликсир и эрланг поставлен через asdf

конфиг постгреса идентичен

на новом месте сыпятся
(ErlangError) Erlang error: {:timeout, {:gen_server, :call, [#PID<0.3127.0>, {:checkout, #Reference<0.2969689412.2365325315.153707>, true, 15000}, 5000]}}

(DBConnection.ConnectionError) connection not available because of disconnection

как бы подебажить и получить более подробную информацию по причинам ошибок?

23 ответов

6 просмотров

iex -S mix run --no-start Запустит шелл без старта аппы Оттуда можете проверить конфигурации И попробовать запустить аппликейшн экто с данными конфигурациями

Artem-Pankov Автор вопроса

Проблемы с запуском нет. Более того оно работает несколько часов, а потом начинает сыпаться. Часть запросов обрабатывается, часть нет

Artem Pankov
Проблемы с запуском нет. Более того оно работает н...

А, тоесть это не при запуске, хым Ну тут видно, что соединение теряется, а не постгря или эликсир отключаются. Так что дело в сети Я бы помониторил что пишет ss -tulpn по поводу соединений, посмотрел бы на ping. Ещё я бы посмотрел на состояния интерфейсов и dmesg, вдруг что-то хардварное Можно даже собрать tcpdump на всякий случай, но я думаю он ничего особенного не покажет, только tcp-пакеты, которые остались без ответа

Lama Lover
А, тоесть это не при запуске, хым Ну тут видно, чт...

Ещё может быть дело в неправильной конфигурации ресурсов машины с базой данных. Может быть там очень много тредов, которые кушают всё время CPU, и не дают базе держать сокеты открытыми

Lama Lover
Ещё может быть дело в неправильной конфигурации ре...

Такое ещё часто бывает, когда система уходит в своп, кстати

Artem Pankov
Проблемы с запуском нет. Более того оно работает н...

У нового постгреса меньший лимит коннекшнов чем у старого?

Artem Pankov
Проблемы с запуском нет. Более того оно работает н...

На новой машине меньший лимит на количество открытых сокетов чем на старой?

Artem-Pankov Автор вопроса
Artem-Pankov Автор вопроса
V
Скорее про ulimit

Там только на файлы 1024, надо поднять

Artem Pankov
Там только на файлы 1024, надо поднять

В момент когда начинают сыпаться ошибки получается ли подключиться к постгресу каким-нибудь клиентом?

Пробовали обновить db_connection? В новых версиях эта ошибка вообще не пишется

Я посмотрел код db_connection Такая ошибка скорее всего происходит когда connection занят чем-то. Вам бы попрофилировать процессы модуля DBConnection.Connection и посмотреть как какой функции и с каким стейтом они висят. Можно банально посомтреть пиды в обсервере и потыкать их через Process.info (ErlangError) Erlang error: {:timeout, {:gen_server, :call, [#PID<0.3127.0>, {:checkout, #Reference<0.2969689412.2365325315.153707>, true, 15000}, 5000]}} А такая ошибка бывает только когда дисконнект вызван явно, либо когда используется только-только созданный connection (DBConnection.ConnectionError) connection not available because of disconnection

Lama Lover
Я посмотрел код db_connection Такая ошибка скорее...

Я бы ещё сделал поллинг через :sys.get_state. Это замедлит работу процесса, но позволит понять его стейт, с которым он таймаутится

Artem-Pankov Автор вопроса
Lama Lover
Я посмотрел код db_connection Такая ошибка скорее...

в целом из интересного удалось выяснить только то, что похоже проблема касается только отдельных процессов у низ зашкаливает очередь сообщений с сообщениями о чекауте

Artem Pankov
в целом из интересного удалось выяснить только то,...

Значит в одном connection зависает транзакция или долго исполняется запрос

Artem-Pankov Автор вопроса
Lama Lover
Значит в одном connection зависает транзакция или ...

с ними же по истечении какого-то времени что-то должно произойти, чтобы они вечно не висели?

Artem Pankov
с ними же по истечении какого-то времени что-то до...

С обычными запросами — да. С транзакциями — нет

Artem-Pankov Автор вопроса
Lama Lover
С обычными запросами — да. С транзакциями — нет

проблема именно с самыми тривиальными селектами причём после перезагрузки постгреса процесс db_connection так и остался висеть и не прибился это в какую сторону бы покопать?

Artem Pankov
проблема именно с самыми тривиальными селектами пр...

Хым, я тут даже не знаю. Опять же, вы используете очень старый db_connection, может попробуете его обновить? Может этот баг уже известен и пофикшен

Artem-Pankov Автор вопроса
Lama Lover
Хым, я тут даже не знаю. Опять же, вы используете ...

ну да, это была первая идея, обновить коннекшн, а для него экто, а для него феникс, ... только с приложением на 3000 тестов это тянет не на день))

Artem Pankov
ну да, это была первая идея, обновить коннекшн, а ...

Ну, обновить рано или поздно придётся А чинить такой плавающий баг, наверное, придётся патчами в db_connection

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Где можно найти примеры эффективного "асинхронного" tcp сервера на C? Я видел select, kqueue, poll, epoll и т.д. Ввод-вывод неблокирующий, но обработка клиентов блокирующая
#
10
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us 👉We offer Interview Support :-for a low cost variety of tech...
Rambabu Nallamilli
3
Hello experts, Could someone kindly tell me how to run vacuum inside a plpgsql function? If you have any link please share. Thank you
Amol Palav
10
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
2
Карта сайта