Преимущества плагина «Кто онлайн»?

Форум Maker имеет большую базу пользователей, но редко бывает достаточно много пользователей, одновременно находящихся онлайн, чтобы коллапсировать отображение аватаров «Кто онлайн». Мы обнаружили, что плагин «Кто онлайн» был причиной медленной работы, вплоть до таймаутов запросов, даже при наличии всего нескольких онлайн-пользователей. Мы используем внешнюю конфигурацию nginx со страницей офлайн-режима, и из-за этих таймаутов запросов периодически отображалась страница обслуживания, даже когда никаких работ по обслуживанию не проводилось.

После миграции с Digital Ocean Spaces мы теперь обслуживаем изображения локально, что создает конкуренцию за воркеры unicorn. Однако мы работаем на виртуальной машине с 2 CPU и 4 ГБ ОЗУ, и у нас относительно большая база данных (около 400 тыс. постов, база данных объемом 6 ГБ), поэтому у нас нет места, чтобы просто добавить множество дополнительных воркеров unicorn по полгигабайта каждый. Я предполагаю, что если бы мы использовали объектное хранилище для изображений, общее влияние было бы меньше из-за меньшей конкуренции за воркеры unicorn, но даже в этом случае оно оставалось бы значительным, учитывая, что мы наблюдали такое влияние уже сейчас всего при двух онлайн-пользователях.

Обновление: Изменение зоны ограничения скорости flood с 12r/s до 36r/s и burst с 12 до 36 по крайней мере уменьшило влияние плагина «Кто онлайн». Мы сейчас тестируем эту конфигурацию.

Дальнейшее обновление: при утроенной скорости flood у нас больше нет сообщений о проблемах.

Я использую внешний nginx и применил ограничение скорости к внешнему nginx, используя шаблон с ограничением скорости в качестве отправной точки, но теперь использую ограничение скорости во внутреннем nginx, потому что внешний nginx не знает, какие маршруты являются статическими, и поэтому применяет ограничение скорости как к статическим, так и к динамическим маршрутам, что при моем предыдущем подходе вызывало множество сбоев/повторных попыток загрузки статических ресурсов. Обратите внимание, что это одна из причин для использования внешнего nginx; в противном случае, я думаю, весь трафик IPv6 будет приписываться IP-адресу Docker и будет ограничиваться по скорости, как будто это один IP-адрес.

4 лайка