Михаил
Больше похоже на поведение кафки когда идёт перебалансировка
Viktor
Воркер ведь наверное не один?
На данный момент один, потому что общее количество сообщений не очень большое
Михаил
Вообще поведение очень похоже, когда у кролика кончается память
Михаил
Вам бы метрики на всю хуйню повисить
Михаил
Вообще поведение очень похоже, когда у кролика кончается память
Правда 30 сообщений не должны же выжирать всё, правда?
Viktor
Правда 30 сообщений не должны же выжирать всё, правда?
Там микро сообщения… точно не должны
Viktor
Но, я сейчас гляну вообще, что с кроликом происходит и с тачкой, где он крутится
Михаил
Может со стороны консумеров. проблема. Он взял на обработку и завис, или взял на обработку и начал ретраить но не пуша в конец или в фейл очередь, а пуша обратно в очередь
Михаил
Ну тут без логиов и метрик можно ванговать точно. 1) узнайте что консумер точно готов принять сообщение в такие моменты 2) выстройте графики и логи самого реббита уже с данными выше идите лучше в SOF
Михаил
Ааа, то есть до этого было затишье?
Михаил
А через, например, 4-5 минут начинает брать.
Михаил
может ваш драйвер background работ слИпается если долго работы нет, это нормальная практика
Viktor
Ааа, то есть до этого было затишье?
Именно) то есть в логах видно, что он ожидает сообщения, и момент, когда в реббите все таки пропадает одно сообщение, в логах консьюмера появляется инфа, что получено сообщение и начата обработка
Михаил
Ваш консумер это демон?
Михаил
или крон жоба?
Viktor
Ваш консумер это демон?
Супервизор демон
Viktor
bin/console messenger:consume + супервизор
Михаил
Ну тогда точно убедитесь что он не отваливается или не слипается
Михаил
если нет, он реди - логи и метрики (графики) повесьте на кролик
Михаил
Про залипание кролика знаю только если траблы с памятью
Михаил
хотел шутку про gc сказать, но это erlang - там проблем с gc нет
Павел
Именно) то есть в логах видно, что он ожидает сообщения, и момент, когда в реббите все таки пропадает одно сообщение, в логах консьюмера появляется инфа, что получено сообщение и начата обработка
Как то странно звучит: в реббите пропадает сообщение -> в консюмере появляется лог. Пока из консюмера не придет ack, из кролика не пропадает ничего. 1) Какие логи вы пишете, личные аппки или прям все логи -vv ? Как понимаете что консюмер "встал"? 2) Попробуйте запустить еще руками паралельно воркер, если нет проблем с конкурентностью, и посмотреть запустится ли.
Павел
да, вот такие логи мы и пишем
А как понимаете что воркер работает ?
Maks
в htop вижу процесс
и этот процес потребляет ресурсы?
Михаил
А завтра с утра будет... Ой, ребят, нашёл, там было: if (rand(0, 100) > 80) { sleep(5 * 60); # раньше надо было зп платить }
Viktor
версии пакетов не обновляли?
неа. вообще ничего не происходило. ни версии пакетов, ни версии ОС, ни версии RMQ, вообще ничего
Maks
и не одного коммита в тот день?)
Viktor
у кролика префеч=1?
а вот кстати нигде никакой не выставлен
Viktor
и не одного коммита в тот день?)
как это всегда и бывает, нет (
Maks
нашел где у меня такое было
Maks
Maks
нодажс, 69 строка
Maks
акк вынесен в финал, если код упадет и не акнуть очередь стакается
Юра
Так и что тут такого. Консюмер по идее должен быть идемпотентный
Юра
Он же поднимется рано или поздно и сделает аск снова
Павел
Так и что тут такого. Консюмер по идее должен быть идемпотентный
Процесс висит, не падает и не акается. Но при этом продолжает читать сообщения. Т.е. со стороны кролика он их копит и не "отпускает", если бы хэндлер падал (но не падал сам процесс) . Но конечно что всегда ак, даже на ошибках - спорненько
Юра
Не совсем понятно
Юра
А чего процессе висит
Юра
И что он делает
Юра
В том коде кстати async await в map лишние
Юра
Можно просто сделать return portalClient.post(...)
Igor
Привет! В симфони ноль. Подскажите, кто юзает CLI для генерации сущностей. Можно как то указать что бы ее сгенерировать в нужную папку? Если например у меня проект разбит на модули
Anton
Привет! В симфони ноль. Подскажите, кто юзает CLI для генерации сущностей. Можно как то указать что бы ее сгенерировать в нужную папку? Если например у меня проект разбит на модули
Привет. Если редактируешь сущность в другой папке, то, вроде как, нужно в кавычках полный неймспейс с классом указать. Возможно с созданием тоже так сработает
Kirill
Хм, а зачем использовать генерацию энтитей и что оно там генерирует?
Kirill
Пустой класс?
Павел
Хм, а зачем использовать генерацию энтитей и что оно там генерирует?
Связи, пропсы. Попробуй) Это грубо говоря вопрос ответ в cli а на выходе сущность с пропсами и геттерами/сеттерами
Павел
Интерактивное создание через cli
Павел
Но смысла дейсвтительно немного, самому накалякать не многим медленее, тем более с IDE который всякий автокомплит делает
Павел
Оно по таблице что ли делает? Я просто не шарю
Не, он сущность генерит. тип справшивает какое имя у пропса, какой тип
Kirill
А, блин, ну это дольше, когда типы кастомные
Igor
Еще вопрос. Во всех примерах все кладется в папки: Controller, Entity, Repository. Я понимаю что симфони юзают в Энтерпрайзе :) есть ли пример как по директориям разбивать? Или в симфони на бандлы режут?
Павел
Так же можно и редачить. Но да, смысла не особо много когда знаешь как руками. Если только может быстрее и делаешь стадарт вей, тип шлеп шлеп, готова сущность с колекциям, геттерами сеттерами
Kirill
Вбивать и вспоминать неймспейсы для айдишников и вельюобжектов - такое себе
Павел
Вбивать и вспоминать неймспейсы для айдишников и вельюобжектов - такое себе
Ну да, это удобно когда стандратное все, потому что вбивать пути сущностей, гемор
Павел
Оно по таблице что ли делает? Я просто не шарю
Наверное из коробоки мэйкер же есть, вот там есть типа make:entity
Павел
А да, она еще вроде сразу и контроллер и репку создает
Kirill
Не там всё равно шляпа будет)
Kirill
Наверное поэтому я и не использовал
Павел
Kirill
На дворе 2к24, тут даже этот стандарт уже легасятина)
Igor
Ну так то я знаю
Igor
Просто ведь например путь до Controller прописан
Igor
В настройках
Igor
Как тогда разнести их по разным папкам?
Павел
Kirill
Ну есть такое, но там фигни много и я хз когда руки доберутся допилить https://github.com/SerafimArts/packagist.app/tree/master