Иногда наверху нашего форума появляется такое уведомление:
Из-за экстремальной нагрузки это временно отображается так, как это видит незарегистрированный пользователь.
У меня есть несколько наблюдений и вопросов по этому поводу:
Во-первых, сервер, похоже, не испытывает экстремальной нагрузки. В последний раз, когда я видел это предупреждение, мониторинг сервера показывал, что пиковая загрузка ЦП составляла 24%, использование памяти — чуть выше 50% и так далее. Насколько мне известно, пользователи не заметили никакого снижения производительности. Так что я задаюсь вопросом: какой порог установлен для этого предупреждения и правильно ли он настроен?
Во-вторых, и это для меня важнее, форум, который я администрирую, полностью приватный. Незарегистрированные пользователи не могут видеть ничего, кроме страницы входа. Следовательно, уведомление некорректно: страница не отображается так, как это видит незарегистрированный пользователь, потому что такой пользователь вообще не сможет её увидеть. Это несколько раз вызывало путаницу, так как создавалось впечатление, что посты нашего приватного форума внезапно стали доступны неавторизованным пользователям. Я сам был довольно встревожен, когда впервые увидел это, и время от времени получаю от пользователей вопросы по этому поводу.
Возможно, это предупреждение стоит переформулировать? Или изменить/отключить для приватных форумов?
def initialize(app, settings = {})
@app = app
end
def call(env)
helper = Helper.new(env)
force_anon = false
if helper.should_force_anonymous?
force_anon = env["DISCOURSE_FORCE_ANON"] = true
helper.force_anonymous!
end
Ссылка:
Также см.:
MIN_TIME_TO_CHECK = 0.05
ADP = "action_dispatch.request.parameters"
def should_force_anonymous?
if (queue_time = @env['REQUEST_QUEUE_SECONDS']) && get?
if queue_time > GlobalSetting.force_anonymous_min_queue_seconds
return check_logged_in_rate_limit!
elsif queue_time >= MIN_TIME_TO_CHECK
if !logged_in_anon_limiter.can_perform?
return check_logged_in_rate_limit!
end
end
end
false
end
В условиях экстремальной нагрузки для сайтов, требующих входа в систему, лучшее, что мы можем сделать, — это просто показать синий экран с сообщением «сайт перегружен, попробуйте позже». Хотелось бы немного подождать перед добавлением этой функции и посмотреть ещё одну жалобу.
Это происходит в очень маленьком частном сообществе Discourse, которое я часто посещаю. Сначала выдал ошибку 502 Bad Gateway от Nginx, затем страница вообще не загружалась. В конце концов она загрузилась, но показало упомянутое выше баннерное сообщение.