Игр было мало (спасибо COVID), поэтому у нас было очень мало возможностей измерять и экспериментировать с этим.
Мы выяснили, что даже при наших улучшенных аппаратных ресурсах (6+4 vCores и 16+8 ГБ ОЗУ) даже умеренно активная аудитория способна вызывать 429 ошибку «клиент заморожен». Мы наблюдали это во время матчей U20 WC, которые привлекли около ~50% нашей обычной аудитории для чатов.
После измерений, проб и ошибок мы остановились на следующих настройках:
DISCOURSE_REJECT_MESSAGE_BUS_QUEUE_SECONDS: 0.4
DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: 400
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 100
Это, похоже, устраняет 80% ошибок 429, обеспечивая относительно плавный опыт для большинства пользователей.
Следующим шагом могло бы стать приобретение других типов аппаратных ресурсов: либо использование выделенных серверов для однопоточной скорости, либо переход к провайдеру VPS, предлагающему тарифы с огромным количеством vCores. Однако для нас следующим шагом будет работа с командой хостинга Discourse, как намекнул ранее @sam.
Надеемся, эти настройки будут полезны для @iceman, @alec или любого другого пользователя. Обязательно следите за использованием CPU и очередями. Также я узнал из этого опыта, что 2 контейнера намного лучше одного — настройки можно применять с почти нулевым временем простоя, а аппаратные ресурсы используются более гибко.
Меня всё ещё интересуют любые новые настройки или результаты, которые могут помочь улучшить производительность и пользовательский опыт для динамичных обсуждений, вызванных событиями реального мира.