The MEGATOPIC: public good, or public menace?

제 제안은 채팅 제품을 평가하여 이를 원활하게 통합하는 것이 목표가 되어야 한다는 것입니다.

Ephemera는 Discourse에 속하지 않습니다.

3개의 좋아요

여기서는 매우 주의해야 합니다. 한 번에 하나의 ‘채팅’ 주제만 두고, 오래된 주제는 철저히 삭제하는 것이 좋습니다. 계속 존재하는 대형 메가토픽(megatopic) 하나하나마다 서버에 상당한 성능 저하가 발생하며, 이 저하는 페이지뷰가 증가할수록 더 커지기 때문입니다.

다만, 다음 글에 따르면 실제 채팅 도구를 통합하는 것이 가장 좋습니다.

3개의 좋아요

이 의견에 100% 동의합니다. 가끔은 커뮤니티에 가치를 더하기도 하지만, 제 생각에는 코드 변경까지 필요할 정도는 아닙니다.

3개의 좋아요

이 성능 저하에 대해 좀 더 자세히 설명해 주실 수 있나요? 이는 닫히고 아카이브된 주제에 해당하나요? 1만 회답에서 주제를 닫는 것은 괜찮지만, 삭제하는 것은 완전히 다른 문제입니다.

저희 커뮤니티는 Discourse를 매우 사랑하며 15년 이상 포럼 기반을 유지해 왔습니다. 채팅방은 사용하지 않을 것이며, 오래된 주제가 삭제된다면 매우 부정적으로 반응할 것입니다. 단순히 이러한 주제들이 존재하는 것만으로 심각하고 점점 커지는 성능 문제가 발생한다면, 정적 페이지로 렌더링하거나 다른 플랫폼으로 이주해야 할 것입니다.

저희 커뮤니티가 Discourse를 어떻게 사용하길 바라시는지에 잘 맞지 않는다는 점은 이해합니다. 하지만 제가 책임져야 할 커뮤니티이며, 강제로 바꿀 수 있는 부분도 있습니다. 실제로 저희 커뮤니티는 현재 Discourse를 사용하면서 과거 어느 때보다도 더 단단해졌습니다. 모두가 현재의 설정에 매우 만족하고 있는 상황에서 다른 플랫폼으로 이주해야 하는 상황은 정말 원치 않습니다.

8개의 좋아요

메가토픽은 대부분 숨겨져 있어야 합니다 – 닫히고/아카이브된 상태여도, 메가토픽에 접근하는 사용자가 많을수록 서버 성능이 더 나빠집니다. 이상적으로는 메가토픽을 삭제하여 한 번에 활성인 메가토픽이 하나만 있도록 하는 것이 좋습니다. 이것이 제 추천 사항입니다. 메가토픽이 많을수록 위험이 커집니다.

충분한 예산을 투입할 수 있다면 서버를 대폭 과잉 프로비저닝하여 더 많은 메가토픽을 지원할 수 있습니다 – 하지만 여전히 모든 주제의 중간 성능에 영향을 미칠 것입니다.

4개의 좋아요

주제가 닫혀 있더라도 데이터, 트래픽, 부하가 계속 발생합니다.

모든 사용자의 읽음 위치가 각 주제별로 기록됩니다. 모든 게시물은 좋아요를 받을 수 있으며, 메가토픽이 닫힌 후에도 여전히 상호작용이 가능합니다. 이는 검색 결과에 얼마나 많은 노이즈를 유발할 수 있는지 언급할 필요조차 없습니다.

2개의 좋아요

그래도 왜 특히 메가토픽이 문제를 일으키는지 설명이 되지 않습니다. 10,000개 게시글의 단일 주제 하나가 1,000개 게시글의 주제 10개보다 나쁜 이유는 무엇인가요? 후자의 경우 잠재적으로 '좋아요’를 누르거나 검색 대상이 되는 게시글의 총 수는 동일하지만, 검색 대상이 되는 읽음 위치와 주제는 10배가 됩니다. 당신의 설명만으로는 더 많은 수의 작은 주제들이 더 나쁘다고 결론 내릴 수 있습니다. 따라서 그 이상의 이유가 있을 것입니다.

4개의 좋아요

한 번에 하나의 토픽만 불러오기 때문입니다. 1,000개의 [여기에 가벼운 단어를 삽입]를 하나씩 10번 들어올리는 것은 아무 문제 없는데, 10,000개를 한꺼번에 들어올리는 것은 훨씬 더 어렵습니다.

2개의 좋아요

다만 세부 사항에 대해 궁금합니다. 기본적으로 스크롤하기 전에 일정 수의 게시글만 로드되므로, 보이는 게시글 수 때문은 분명 아닙니다. 타임라인 때문일까요? 토픽 요약 때문일까요? 아니면 단순히 토픽의 전체 게시글 수를 기준으로 하는 선형 또는 선형 이상의 알고리즘 때문일까요?

"메가"를 어떻게 정의하느냐에 따라 다르겠지만, 저는 메가토픽에 대해 크게 신경 쓰지 않습니다. 제가 가장 자주 방문하는 커뮤니티의 섹션에서 게시글 수가 가장 많은 토픽은 약 3,600개 정도이고, 10위권 내 토픽은 600개, 25위권 내 토픽은 300개 정도에 불과합니다. 이 시점에서 저는 기술적인 관점에서 더 궁금한 점이 많습니다.

6개의 좋아요

여러분의 질문에 답하기 위해 작성한 데이터 탐색기 쿼리입니다. 다른 주제와 오프셋으로 시도해 볼 수 있습니다.

-- [params]
-- int :topic_id = 107216
-- int :offset = 10000

SELECT "posts"."id" FROM "posts" 
WHERE ("posts"."deleted_at" IS NULL) 
AND "posts"."topic_id" = :topic_id
AND "posts"."post_type" IN (1,2,3) ORDER BY "posts"."sort_order" ASC LIMIT 20 
OFFSET :offset

다음은 일반적인 크기의 주제와 터무니없이 큰 주제입니다:

Example time: 3.4ms
  ->  Index Scan using index_posts_on_topic_id_and_sort_order on posts  (cost=0.43..1925.22 rows=477 width=8)

example time: 353.9ms,  739.6 ms (time varies depending on database caching)
  ->  Index Scan using index_posts_on_topic_id_and_sort_order on posts  (cost=0.43..605155.88 rows=161255 width=8)

750ms보다 긴 시간을 본 적이 있는 것 같습니다.

다음은 중앙값과 99퍼센타일 시간입니다. 중앙값 시간은 놀라울 정도로 좋지만, 중앙값의 특성상 60퍼센타일 지점에서 중앙값 케이스보다 훨씬 나쁜지 알 수 없습니다.

다음은 다른 서버입니다 (터무니없는 수의 카테고리가 있어 성능 저하가 발생하므로, 메가토픽이 없는 상태에서는 직접 비교가 어렵습니다) 하지만 중앙값 성능이 절반이고 최악의 경우에도 훨씬 낫다는 것을 볼 수 있습니다:

11개의 좋아요

저도 그렇습니다, 단순히 궁금해서요.

다음 설명에 따르면 메가토픽 내 탐색이 성능 저하를 일으킬 수 있다는 점은 이해합니다:

그러나 메가토픽 하나 또는 여러 개가 포럼의 다른 페이지 탐색, 예를 들어 토픽 목록 등에 어떤 영향을 미칠 수 있는지는 이해하지 못하겠습니다. :red_question_mark:

서버에 많은 부하를 가하는 것입니다. 메가토픽 1건당 로드는 성능 저하가 100배에 달합니다! 바로 위에 있는 게시물을 확인해 보세요.

5개의 좋아요

안녕하세요,

현재 Discourse로 가져오고 있는 포럼에는 메가 토픽(mega topics)이 매우 많습니다:


(게시글이 아직 모두 가져와지지 않았습니다!)

메가 토픽은 Discourse에서 잘 작동하지 않기 때문에, 실제로 어떻게 해야 할까요? (향후 커뮤니티를 위해 Discord 같은 채팅을 제안할 계획이지만, 현재 토픽에 대해 어떻게 처리해야 할지 알고 싶습니다.)
삭제해야 하나요?
분리 후 닫아야 하나요?
분리할 경우, 토픽당 메시지 수는 몇 개로 설정해야 하나요? 기본값인 10,000개가 충분한가요, 아니면 줄이는 것을 권장하시나요?

3개의 좋아요

10k 크기로 나누면 충분할 것입니다.

8개의 좋아요

또한 그중 대부분은 괜찮아 보입니다. 실제로는 1만 원부터 지출이 급증하기 시작하며, 스크린샷에 표시된 항목 대부분은 1만 원보다 훨씬 적습니다.

6개의 좋아요

메가 토픽의 성능 영향에 대한 최신 소식은 무엇인가요? 코로나19 팬데믹 후속 토픽이 곧 1만 개의 게시글에 도달할 예정이며, 최근 발생 가능한 속도 저하를 분석하고 있습니다.

4개의 좋아요

서버 통계가 "어떻게"여야 하는지 정확히 알지는 못하지만, 메가토픽이 많은 커뮤니티의 통계를 공유해 드릴 수 있습니다. 현재 10,000개 게시글이 있는 닫힌 토픽이 15개이고, 2,000개 이상의 게시글이 있는 열린 토픽은 50개 이상입니다. 특정 시점에 포럼 활동의 대부분은 소수의 매우 활발한 토픽에서 이루어집니다.

현재 DigitalOcean 서버(가상 CPU 4개, 메모리 8GB, 디스크 160GB)를 사용 중이며, 월 요금은 40달러입니다. 몇 달에 한 번 정도 라이브 이벤트가 열려 많은 사용자가 동시에 게시글을 작성할 때(예: 1~2시간 동안 단일 토픽에서 분당 여러 개의 게시글이 작성되는 경우) 일부 사용자에게 “극도의 부하” 메시지가 아주 잠깐 표시될 수 있습니다.

그 외 시간에는 성능이 매끄럽게 작동하며 문제가 없습니다. 현재 추이를 보면 다른 하드웨어를 업그레이드하기 전에 디스크 용량이 먼저 부족해질 것으로 보입니다.

6개의 좋아요

2,000개 정도의 게시글은 큰 문제가 되지 않습니다. 10,000개 이상의 게시글이 있는 토픽이 수십 개 정도라면(특히 폐쇄된 상태라면) 괜찮을 것입니다. 위험한 상황은 활성 상태인 메가토픽이 너무 많을 때입니다. 여기서 '너무 많다’는 것을 수십 개를 초과하는 수준으로 정의하겠습니다.

10개의 좋아요

메가 토픽은 메타(Meta)에서는 일반적으로 문제가 되지 않지만, 많은 커뮤니티에서는 토론을 조직하는 자연스러운 방식인 것 같습니다. 즉, 토론에는 자연스러운 분기점이 없습니다.

인더레스(Inderes)는 주식 시장을 위한 재무 분석을 제공하는 핀란드 기업입니다. 최근 디스코urs 커뮤니티를 출시했는데, 해당 지역과 시장을 고려할 때 엄청난 성공을 거두었습니다.

토론은 주로 주식 또는 투자 상품별로 조직됩니다. 예를 들어 $AAPL이나 $TSLA와 같은 종목입니다. 불과 2년 만에 이러한 토픽 중 많은 수가 1만 회 답변에 근접하고 있습니다. 이는 디스코urs에 대한 훌륭한 개념 증명(생동감 있는 커뮤니티가 처음부터 구축됨)이 되면서도, 메가 토픽의 문제를 강조합니다.

4개의 좋아요

그렇지 않다면 연도별로 나누는 것도 방법입니다. 첫 번째 게시물에서 이 내용이 다루어집니다. 메가토픽(megatopic)은 한동안 잘 작동할 수 있지만, 개수가 너무 많아지면 결국 사이트가 무너질 수 있습니다.

(또한, 같은 "토픽"에 수만 개의 게시물이 쌓이면 검색이 악몽이 됩니다. 사실상 채팅방을 만들어 놓은 것과 같습니다.)

6개의 좋아요