В Discourse мы стремились внедрить YJIT с тех пор, как команда инфраструктуры Ruby on Rails из Shopify объявила его готовым для промышленного использования. После того как мы увидели многообещающие результаты локальных тестов, в начале мая 2023 года мы начали запускать наши промышленные приложения Rails с включённым YJIT в Ruby 3.2 на выбранных кластерах. Затем мы потратили некоторое время на оценку его производительности в реальных условиях. Мы рады поделиться полученными положительными результатами. На основе этих данных мы теперь включили YJIT во всех наших хостинг-сервисах, а пользователи с собственным хостингом могут при желании сделать то же самое.
Мы начали тестирование производительности Discourse с YJIT в ноябре 2022 года, а с января этого года начали запускать Meta под YJIT периодически. YJIT стал одной из причин, позволивших нам ускорить обновление с Ruby 2.7 до Ruby 3.2 всего за несколько месяцев, и я в восторге, что он наконец-то здесь. Ещё больше я рад тому, что улучшения, которые появятся в Ruby 3.3, выглядят ещё лучше!
И это без каких-либо измеренных данных, основываясь лишь на том, что чувствует и видит один или несколько пользователей.
Для меня этот форум стал медленнее уже некоторое время. Почти каждый раз при открытии темы я на короткое мгновение вижу вращающийся круг. Конечно, это может быть и почти наверняка связано с серверами и расстоянием между США и Европой. Но Meta работает медленнее, чем раньше.
Я начал использовать YJIT на своём форуме, и когда сервер находится в Германии, а пользователи из Финляндии, все говорят, что все темы открываются быстрее. Это на самом деле довольно забавно, потому что мы не замечаем изменений в чистом времени загрузки менее 200 мс.
Я уже довольно давно размышляю о фиксированном (или последовательном) времени загрузки страниц. Имеется в виду, чтобы время загрузки для каждой страницы и каждого пользователя было максимально стабильным.
Информация о финских пользователях интересна; она заставила меня задуматься, не стоит ли маршрутизировать пользователей на основе GEO IP или задержки на разные серверы с разной нагрузкой, просто чтобы сократить время отклика для них.