AP 처리 때문에 포럼이 느려지는 것일까요?

@angus님, 실제로 무슨 일이 일어나고 있는지 단정 지을 수는 없습니다. ActivityPub 플러그인에 대해 잘 아는 관리자급 인력이 필요하지만, 이 포럼이 때때로 느려지거나 심지어 접속이 불가능해지는 것을 관찰했고, 이는 연동(federated)되는 게시물과 관련이 있는 것으로 보입니다.

이 게시물에서 해당 문제를 알렸으며, @silverpill님이 이 답변을 투트(tweeted)한 직후 어제 그 현상을 목격했습니다. NGINX에서 "503 Gateway timeout" 오류가 발생했는데, 이는 이 게시물과 관련이 있을 수 있다고 생각합니다.

답변을 게시할 때 SH가 응답을 멈추는 현상도 발견했습니다. 이는 답변이 여러 다른 서버로 동시에 전달되면서, 모든 서버가 한꺼번에 답변 트리를 로드하기 때문이에요.

불편을 드려 죄송합니다.

이것이 사실이라면, 이는 링크 미리보기가 문제를 일으키는 방식과 유사한 일종의 "thundering herd"(번개 무리) 문제입니다. 이를 완화하기 위한 방법은 소프트웨어가 절대 표시되지 않을 수도 있는 리소스를 자동으로 가져오는 것을 중단하고, 대신 필요할 때 지연된 "lazy loading"(지연 로딩) 전략을 사용하는 것입니다.

여러분, 곧 자세히 살펴볼게요. 내일쯤 될 것 같습니다.

그 문제로 인해 플러그인을 비활성화했습니다. 같은 소스 인스턴스나 다른 여러 인스턴스에서 동일한 유형의 요청을 지연 제한 없이 끊임없이 보내고 있어서요. 솔직히 계속 요청을 보내며 서버를 범람시키는 건 너무 이상합니다.

angus:

안녕하세요, 곧 이 문제를 좀 더 자세히 살펴보겠습니다. 내일쯤 가능할 것 같습니다.

압력을 주려는 건 아니고, 지금이 여름 휴가철이라 타이밍이 적절하지 않을 수도 있지만, 혹시 이 문제를 파고들 기회가 있다면 정말 좋겠습니다. 현재 단일 연동 게시물이 한동안 포럼을 매우 느리게 만들 수 있으며, 게시물 하나와 수정만으로도 방문자에게 nginx 오류 화면이 표시될 정도로 포럼이 불안정해집니다.

여러분, 이 문제가 심각한 이슈를 일으키고 있다면, 플러그인에는 이미 커뮤니티 관리자가 이 같은 시나리오에서 사용할 수 있는 여러 도구가 마련되어 있다는 점을 참고해 주세요.

  1. 문제의 원인이 되는 행위자를 파악하는 데 사용할 수 있는 포괄적인 로깅(오브젝트 로깅 포함)이 있습니다.

    • activity_pub_verbose_logging
    • activity_pub_object_logging
  2. 인박스 및 오브젝트 검색에 대한 레이트 리미팅과 사이트 설정을 사용하여 요청이 이루어지는 속도를 제어할 수 있습니다.

    • activity_pub_rate_limit_post_to_inbox_per_minute
    • activity_pub_rate_limit_get_objects_per_minute
  3. 도메인 허용 목록(allowlist)과 차단 목록(blocklist)을 설정할 수 있는 사이트 설정이 있습니다.

    • activity_pub_allowed_request_origins
    • activity_pub_blocked_request_origins
  4. 문제적인 팔로워로부터의 팔로우를 "거부"할 수 있는 관리자 작업이 있습니다.

또한, 서버가 처리할 수 있는 활동량은 서버의 리소스에 따라 달라집니다. 이는 제가 파악할 수 없는 부분입니다.

@aschrijver 리소스부터 확인해 보시는 것을 권합니다. 서버의 리소스는 어떻게 되나요? 정확히 무엇이 과부하 상태인가요? 현재 socialhub.activitypub.rocks를 아예 로드할 수조차 없습니다. 리소스 사용과 관련하여 더 근본적인 문제가 있는 것으로 추정됩니다.

그리고 두 번째 질문은 요청이 어디서 오고 있는지에 대한 것입니다. 이를 로깅을 통해 파악할 수 있습니다. 그런 다음, 많은 요청이 들어오는 도메인을 activity_pub_blocked_request_origins에 추가하세요.

먼저 이러한 기존 수단들을 사용해 보았음에도 여전히 성능 문제를 겪고 있다면, 그제서야 다른 잠재적인 원인을 살펴볼 수 있습니다.

좋아요, SocialHub가 로드되었습니다. 로그를 확인해 보니 원인이 비교적 명확해 보입니다.

mastodon.sdf.org를 차단 목록에 추가하고, 해당 사이트 관리자에게 SocialHub를 스팸하고 있다는 점을 알리는 메시지를 보내는 것을 제안합니다.

*수정: 서명된 요청이 비활성화되어 있었다는 점이 또 다른 문제였던 것 같습니다. 다음과 같이 조치했습니다:

  1. Activity pub require signed requests를 true로 설정했습니다.
  2. Activity pub blocked request originsmastodon.sdf.org로 설정했습니다.

문제가 지속되는지 지켜보겠습니다.

빠른 답변 감사합니다, @angus. 저는 이 포럼의 일반 회원일 뿐이지만, 이 정보는 @how님이나 다른 포럼 관리자들이 확인해 보면 유용할 것 같습니다.

걱정하지 마세요. 서명된 요청을 활성화하고 mastodon.sdf.org을 차단 목록에 추가하는 것만으로 충분할 것 같습니다.

모든 곳에서 차단되어야 합니다. 이 도메인은 DDoS 에이전트 역할을 하고 있으며, 발생하는 요청 횟수가 정말 끔찍합니다.

mastodon.sdf.org를 차단해야 할까요? legitimate한 출처인 것 같지만, 구성이 문제일 수도 있겠네요. 필요하면 제가 처리할 수 있습니다.

angus:

지금 socialhub.activitypub.rocks를 아예 로드조차 할 수 없습니다. 리소스 사용과 관련하여 더 근본적인 문제가 있는 것 같습니다.

네, VPS가 작긴 합니다. 더 강력한 사양으로 업그레이드할 수 있습니다.