относительно популярный бот (Жабабот @tgtoadbot, чуть больше 100к активных игроков в телегарме сейчас, многие и них активно пишут в чатах команды боту) и мы с проблемой столкнулись в телеграме.
Вечерами у нас ловятся тормоза, но необычные. В какие-то моменты бот перестаёт получать ивенты от телеграма. Секунд на 5. Потом снова начинает получать их.
Но тоже немного хитро. Если в момент зависания написать что-то в чат, то он их не получит, как я писал выше. И, когда бот снова начинает получать ивенты и работать в других чатах, в тестовом чате, где я давал команду, он не получит ивент, пока что-то ещё в этот чат не написать (не обязательно команду бота). И вот в этот момент он получит и новый ивент, и старый.
Вы с таким не сталкивались?
Причём неважно, лонгполл мы используем или вебхуки. Причём проблема не в сервере, именно запросы от телеграма перестают приходить, судя по логам nginx (в момент этих тормозов видно, что в это время нет обращений в access_log)
Извините, что сумбурно, хотел просто детально проблему описать.
У вас боты явно популярнее нашего, может сталкивались.
Попробуй поставить вечером на фон пинги к гуглу с записью в лог. Это могут быть огрехи провайдера/сервера
У вас очередь обработки существует?
А это не противоречит тому, что после этого "разлагивания" бот может начать получать сообщения от чатов, но в тестовом не получит старый ивент, пока какое-то сообщение не напишешь в чат?
Да, формируем. Но, думаю, что не в скрипте дело, потому что по access логу nginx тоже видны эти зависания. Что в какой-то момент секунд на 5 перестают приходить запросы от телеграма. (очередь по старым запросам продолжает работать. У нас есть несколько типов событий, где бот раз в пару секунд редактирует старые сообщения, эти события продолжают работать) А потом всё опять ок
Ну... Я если честно с такими бедами не сталкивался, я не обладаю ботами с такой адской нагрузкой, но это могут быть типичные странности телеги после подобных приколов с сетью
Ну да, кто их знает. Это проверю, спасибо большое за идею
Я сталкивался с таким поведением когда возвращал телеге не 200 код, она начинает ретраить с увеличивающимся сроком Возможно у вас такая же фигня
Этот чат может и 30 и 40 минут висеть (больше просто не тестили), пока сообщение новое не напишешь. При этом другие чаты летают
А, выглядит как баг в ботапи) Поставьте свой инстанс и попробуйте воспроизвести
Я почитаю что это. Примерно понимать, но не имел дела)
Баг на стороне телеги, если просто
Есть такое, знаю одного бота с такими траблами
Не знаете, как пытались решать? Видимо, не решили до сих пор?
Не важно)
и как потестишь напиши сюда или в лс передать сможем админам из тг
Да, обязательно. Завтра сеть проверю и отпишусь
А ты разраб главный?
Нет, это бот моего брата. Я сейчас с разработкой ему помогаю. Сам бот от его аккаунта зарегистрирован
Было такое. Мне помогло отключение ipv6 адреса (хз почему, на сайте каком-то нашел)
Ух ты, записал, попробую
Хм, очень похоже на мои проблемы... Когда пофиксите, напишете сюда?)
Попробуйте в момент "затыка": curl -s "https://api.telegram.org/%BOT_TOKEN%/getWebhookInfo"|jq . и проанализируйте ответ: { "ok": true, "result": { "url": "........../polechudesbot/update", "has_custom_certificate": false, "pending_update_count": 0, "last_error_date": 1629897596, "last_error_message": "Wrong response from the webhook: 502 Bad Gateway", "max_connections": 40, "ip_address": "............." } }
Сохранил. Пасиба. А вот тут есть макс коннекшен. Его как-то можно менять? Или как-то сделать, чтобы коннекты как можно быстрее отрабатывали? Типа не ждать выполнения моего скрипта, а сразу ответить ок и пусть новые шлёт)
Это (в данном случае дефолтное) значение потоков, которые сервер открывает чтоб слать вам апдейты. После того как обнаружит что ваш бекенд "ожил".
Но влиять на него можно как-то
Я так словил ошибку, когда пытался писать "однопоточный" код.
Да, через метод setWebHook
зачем курлом? обычным гетом можно в браузере
Вы токен же подставили?
ссылку просто в браузере можно открыть
ещё желательно bot после .org/
Стикер
🤔 идею понял, звучит разумно, спасибо. Подумаю
1629900501 -> 2021-08-25 17:08:21, сегодня три часа назад Это вы вебхук ставили тогда?
А, да. Бота ребутнул
рекомендую max_connections 100 поставить при установке вебхука а еще подумать насчет внешней очереди, а не jobqueue в ptb
И зачем это, интересно 🤔
Да, попробую, спасибо
Так это обычный запрос getWebhookInfo Хз, что такого особенного вам даст, но ждем результатов исследования Я лично с ним только очередь проверяют
Стоило мне собрать консилиум умных людей, как фризы прекратились :)
Тут ламповый чатик, да. Обсирают и самоутверждаются только периодически и только некоторые)
А давай я тебе про sql-иньекции расскажу?)
Стикер
Научусь программировать и буду тут как влитой некоторый)
У нас так однажды всем игрокам ники на матерный поменяли :)
Private message for @grinrill
Ой, им лучше не рассказывай... тут у нас злопамятные школьники без самоиронии бывают
Private message for @id10987654321
Стикер
Private message for @grinrill
Обсуждают сегодня