극심한 부하로 인해, 현재는 로그아웃된 사용자가 보는 것과 동일한 화면이 임시로 표시됩니다.
이 알림에 대해 몇 가지 관찰 사항과 질문이 있습니다:
첫째, 서버가 실제로 극심한 부하 상태에 있는 것 같지 않습니다. 이 경고가 마지막으로 표시되었을 때, 서버 모니터링을 확인해 보니 CPU 부하가 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