BT9G LABS / DHT 심층 분석 #13

Seeders와 Leechers: 숫자의 의미와 측정 방법

Seeder/Leecher 정의, Tracker scrape, DHT 한계, 글로벌 Swarm 규모를 정확히 측정하기 어려운 이유를 설명합니다.

BT9G Labs / DHT Deep Dive #13. 프로토콜 의미와 검색 사이트의 표시 숫자 출처를 분리해서 이해합니다.

Seeders와 Leechers: 숫자의 의미와 측정 방법

빠른 요약

  • 주제: Seeders와 Leechers: 숫자의 의미와 측정 방법
  • 핵심 키워드: Seeders, Leechers, Tracker scrape, Swarm size, DHT
  • 대상 독자: 백엔드 엔지니어, 프로토콜 연구자, 검색 엔지니어, BitTorrent 구현자
  • 목표: DHT와 BitTorrent의 동작 원리를 실제 크롤러, 인덱싱, 검색 아키텍처 설계에 활용할 수 있을 정도로 정확하게 설명합니다.

시스템 뷰

정의와 측정 주체

Seeder는 일반적으로 전체 콘텐츠를 보유하고 업로드를 계속하는 Peer이고, Leecher는 아직 완료하지 않은 Peer입니다. 하지만 화면에 보이는 숫자는 누가 관측했는지에 따라 달라집니다. 모든 BitTorrent client 상태를 수집하는 하나의 글로벌 중앙 서비스는 없습니다.

그래서 count에는 source와 timestamp가 중요합니다.

Tracker scrape의 의미

지원되는 Tracker는 complete, incomplete, downloaded 같은 값을 줄 수 있습니다. 이는 해당 Tracker가 알고 있는 범위에서는 명확한 통계입니다. 하지만 같은 Torrent가 여러 Tracker, DHT, PEX를 함께 사용할 수 있고 참여자 집합은 겹칩니다.

여러 Tracker의 수치를 단순히 더하면 글로벌 수치가 되지 않습니다.

DHT만으로 정확한 Seeder 수가 어려운 이유

BEP 5의 get_peers는 endpoint를 반환하지만 각 Peer가 콘텐츠의 100%를 보유했는지 알려주지 않습니다. 한 번의 lookup도 모든 Peer를 전부 열거하지 않습니다.

따라서 DHT 기반 UI라면 recently observed peers, last active, activity score처럼 실제 측정 가능한 개념을 사용하는 편이 정확합니다.

구현 스케치

{
  "source": "tracker_scrape",
  "infohash": "...",
  "complete": 142,
  "incomplete": 37,
  "observed_at": "2026-09-16T03:00:00Z"
}

BT9G Labs 엔지니어링 노트

BT9G 같은 인덱싱 시스템에서는 이벤트 수 자체보다 콘텐츠 식별자, 수명이 짧은 네트워크 관측값, 수집 상태, 검색용 문서를 분리하는 것이 중요합니다. DHT나 Peer에서 얻은 필드에는 출처와 타임스탬프를 남기고, discovery, 연결, handshake, 확장 지원, Metadata 수집, 검증, 저장, 검색 반영을 단계별로 측정해야 실제 병목을 찾을 수 있습니다.

흔한 오해

  • 모든 active Peer를 Seeder로 보는 것.
  • 여러 Tracker scrape를 중복 고려 없이 더하는 것.
  • DHT endpoint 수로 정확한 Seeder 수를 계산하는 것.
  • source와 timestamp 없이 count를 표시하는 것.

관련 BT9G Labs 글

참고 자료


다음 글: Torrent Metadata 수집이 실패하는 10가지 이유와 더 나은 Retry 모델 →

이 글은 공개 BitTorrent 프로토콜의 동작을 엔지니어링 및 연구 목적으로 설명하며, 관측된 모든 Swarm이 사용 가능하거나 유효하거나 재배포 허가를 받았음을 의미하지 않습니다.