Найди себя среди актеров. Часть 2
Всех снова приветствую!
Может кто-то помнит про нас или уже успел попользоваться сервисом ;)
Итак, немного технической информации!
Прошло больше суток после запуска в продакшн нашего фан сервиса по сравнению пользователей с порно-актерами. Хочется сказать что сутки вышли достаточно напряженными. Количество пользователей сервиса резко подскочило только сегодня ближе к обеду и мы отметили, что не справляемся с нагрузкой. Если вы спросите меня как мы это поняли, то я вам отвечу, что средний ответ на запрос пользователя достигал более 5 минут!!! Естественной преградой для обработки большого числа заявок стал сам Телеграм. Выяснилось что у него ограничения на одновременную отправку сообщений с результатами пользователей не более 30 в секунду. Пришлось немного попотеть над оптимизацией нашего бота.
Во-первых бот лежал всю ночь (около 6 часов) мертвый и грустный. Проблема была в том, что если нашего бота кто-то банил в контакт листе, то бот не мог отправить ему сообщение и оперативно сваливался с ошибкой. Пофиксили первым делом! )
Во-вторых выяснилось что на каждый правильный запрос пользователя тратится 8 сообщений: приветствие, вступительное слово о том, что ему нужно сделать, 3 сообщения с фотографиями, 3 сообщения с подписями. Сперва мы убрали приветствие и стали выводить имена актеров одной строкой. Это немного помогло, но мы решили что можем достичь большего результата.
В-третьих мы заметили что фотографии актеров разного размера и неплохо было бы их привести к единому стандарту. Использовав пакет утилит ImageMagick мы преобразовали их достаточно оперативно, что визуально улучшило выдачу результатов. И в итоге прочитав про возможности этого пакета мы решили выводить имена актеров сразу на изображении, а затем объединять 3 изображения в одно. Это решение было решающим чтобы с успехом справляться с текущей нагрузкой из сарафанного радио!
И немного про то, что под капотом:
Бот написан на ruby с использованием telegram-bot-ruby.
Строк кода в боте: 354
Количество уникальных пользователей: ~2500
Количество запросов на сравнение: ~12000
Обработку изображений делали с помощью пакета imagemagick, а также gem для ruby: rmagic.
P.S. Всех желающих приглашаю протестировать нашу чудную поделку по своему усмотрению) https://t.me/pronstar2000_bot