Вадим
проблема в том что оно в общем всегда есть но вот иногда его нету
Михаил
а чо его нету
Дай тогда полную инфу
1) posrgesql ваша субд?
2) используете пулл соединений к бд?
3) приложение живёт в контейнере?
4) как долго это приложение работает без перезапуска?
Михаил
проблема в том что оно в общем всегда есть но вот иногда его нету
Если короткий ответ - сталкивался с таким когда приложение живёт примерно 2 недели, и утилизирует пулл соединений (к примеру pgBouncer) то почему то иногда соединения завершаются вот с такой ошибкой. Со стороны бд она выглядит как «клиент разорвал соединение сам»
У моей команды было предположение что если соединение очень долго открыто то pgBouncer насильно рвёт соединение.
Если у вас не pg, но 2 и 4 ответ да - всё равно проверьте теорию.
Мы её так и не решили.
Михаил
Ну и если решите то поделитесь. Но решать нужно с вашим отделом devops
Вадим
Вадим
Вадим
Вадим
как бы его завершать иногда чтоли
Вадим
этот сервис
Вадим
или соединение закрывать
Михаил
Вадим
ага, сделал так
но это ж не про память, а про соединение
но хуже не будет, это точно, спасибо
Михаил
Вадим
да, спасибо
Михаил
Я про time limit🔔
Михаил
Вадим
это ограничение на обработку одного мессаджа как я понял
Вадим
.
не понял как это связано
Вадим
победил вроде, всё в доке написано
https://symfony.com/doc/6.4/messenger.html#middleware-doctrine
Ivan
Привет! Кто использует вход по ссылке? Насколько безопасным является способ, если из атрибутов используется только id?
Михаил
Ivan
Буквы/цифры
Михаил
так же, так как это get запрос - возможна кеширование ссылки в браузере. Но это проблема уже пользователя будет, хотя не желательно давать кешировать.
ещё если ссылка не абсолютно случайная - может быть возможность как-то сгенерировать. Одним словом id не должен быть скомпрометирован и он не должен быть динамическим.
Ivan
Насколько я помню, там еще expires, поэтому кэш не должен мешать пользователю при формировании новых ссылок. Вопрос только достаточно ли id, или например добавить туда время последней авторизации?
Ivan
Понятно, спасибо!
Михаил
Но 256 символьный хеш никто не пройдёт. Защита от брутфорса, ttl ссылки, передача ссылки через безопасные каналы, возможность пользователю замораживать активность страницы если что-то происходит не то и ведение логов безопасности (уведомляя пользователя) будет приятным бонусом
Михаил
Вы хотите из почтовых рассылок дать возможность логинится пользаку?
Вадим
Привет!
как правильно использовать транзакции в апи платформе?
Допустим я удаляю сущность и с ней надо ещё 5 разных удалить паровозом. Как это лучше сделать? Допустим я могу в событии preDelete открыть транзакцию и всё остальное удалить. А как прервать основное удаление если что-то где-то пойдёт не так?
Павел
Вадим
Юра
Кто-то сталкивался с тем что симфони мессенджер через доктрину вызывает большое потребление цпу у мускуля?
Юра
запускаю консюмер и сразу
Юра
Юра
Он постоянно пулит сообщения, раз в две секунды где-то, но все равно почему такое высокое потребление непонятно
Вадим
Kirill
Kirill
я бы тоже ответ послушал
Вадим
:)
Вадим
:)))
Kirill
у меня в каждой репке персист+флуш
Вадим
ага
Kirill
но чую что это не очень
Вадим
ну уже почитал, народ разное пишет
Kirill
вообще, выглядит так, что с точки зрения производительности лучше сейв вне репок пускать через какой-нибудь uow
Kirill
ну т.е. uow же и так инфра отвязанная от бд в теории
Kirill
так что в сервисе дёргаешь юзкейсы, которые чёто меняют, и пушишь в uow, а потом на нём флуш
Kirill
не совсем корректно с точки зрения логики: репа должна быть абстракцией над хранилищем, но...
Михаил
Михаил
А ещё желательно глянуть какие запросы идут в рамках работы мессенджера, может ты там жёсткие джоины делаешь или сканы.
В общем найти все запросы и заэксплейнить
Вадим
и вот ещё вопрос - есть же cascade: ['remove'] но чую я уже путаюсь кто там кого удаляет, а потом вообще не разберусь, наверное лучше всё ручками?
Михаил
Вадим
Вадим
там экономия копеешная мне кажется
Михаил
Михаил
Юра
Юра
Я вообще ничего не делаю это стейдж где никого нет
Юра
Заметил что проц кушается полез смотреть кто, прибил доктрин консюмер и все стало ок
Вадим
придумал!
function remove($entity, $flush = false) {}
Вадим
класс?
Вадим
:)
Nikolay
Вадим
ну блин
Михаил
Вадим
а чо
Михаил
а чо
А то что это сраный Ларавель
Вадим
Nikolay
Чем больше с доктриной работаешь, тем понимаешь что половину функционала лучше не использовать
Михаил
У тебя есть возможность отменять транзакции не делая транзакции.
Или транзакции коммитить вообще не создавая их.
Unit of work и identity map это реально подарок. У тебя есть целый слой на котором ты работаешь с логикой и объектами так, как это в solid и планировалось. А уже на слое ниже сохраняешь всё это дело. А не то что у тебя идёт бл, и тут ХУЯК какой-то репозиторий и какой-то метод save
Михаил
А ещё ты вдруг узнаешь о CDC. Сервис который флашит изменения единой транзакцией неожиданно обнаружит что он очень тихий и очень мало пишет апдетов в кафку.
А сервис который на каждый чих делает персист + флюш будет эту кафку засерать и насиловать внешние системы.
Вадим
Михаил
А так можно? Можно!
Это нормально? Это нормально!
А если осудят? Да похуй