Jellyfin에 필요한 RAM은 미디어 라이브러리의 테라바이트 수에 정비례하지 않고, 활성 작업 집합과 호스트의 나머지 구성에 따라 증가합니다. 전용 Linux Jellyfin 서버라면 적은 메모리로도 충분할 수 있지만, 사용자 수가 중요한 경우는 주로 동시 세션, 트랜스코딩 버퍼, 캐시 활동 또는 동시에 실행되는 부가 서비스가 늘어날 때입니다.
운영 체제, Jellyfin, 실제로 항상 실행되는 서비스에 필요한 메모리부터 확보한 다음, 평소 가장 바쁜 시간대를 확인하세요. 활성 작업 집합으로 인해 지속적인 메모리 압박, 유해한 회수 또는 스왑, OOM 이벤트가 발생할 때 RAM을 추가하고, 8GB, 16GB 또는 32GB를 보편적인 Jellyfin 기준으로 사용하지 마세요.
라이브러리 용량은 RAM 예산이 아닙니다
40TB 라이브러리도 적은 RAM으로 디스크에서 Direct Play할 수 있는 반면, 훨씬 작은 서버라도 Jellyfin, 다운로드 자동화, 사진 인덱싱, VM, 메모리 기반 트랜스코딩을 실행하면 훨씬 더 많은 메모리가 필요할 수 있습니다. 저장 용량을 메모리 추정치로 바꾸기 전에 활성 서비스와 최대 동시 작업을 계산하세요.
현재 Jellyfin 사양 예시는 주변 작업 부하가 커질수록 주로 메모리가 증가하는 모습을 보여 줍니다. 여기서 얻을 수 있는 유용한 교훈은 공개된 단계별 사양을 예시로만 보고, RAM을 라이브러리 크기에 곱하는 대신 전체 호스트를 확인하라는 것입니다.
항상 실행되는 컨테이너와 VM, 평소 가장 무거운 스캔 또는 트랜스코딩 작업, 가정 내 최대 동시 세션 수를 정리하세요. RAM 예산은 이 작업 부하를 견딜 수 있어야 합니다.
사용자 수는 작업 부하가 겹칠 때만 중요합니다
계정 하나를 추가하는 것만으로는 메모리 사용량이 거의 늘지 않습니다. 동시 재생, 서로 다른 클라이언트 경로, 자막 처리, 다운로드 및 동시에 실행되는 백그라운드 작업이 추가되면 활성 작업 집합이 달라집니다. 중요한 수치는 등록된 사용자가 아니라, 가장 바쁜 몇 명의 사용자가 동시에 발생시키는 작업입니다.
미디어 스택은 서버 자체보다 빠르게 커질 수 있습니다. 이 가정용 NAS 미디어 앱 스택은 Jellyfin이 요청, 인덱서, 자막 및 다운로드 서비스와 함께 실행되는 일반적인 구성을 보여 주며, 각 서비스는 자체 메모리를 사용합니다.
평소 사용하는 부가 컨테이너를 그대로 실행한 상태에서 최대 재생 부하를 테스트하세요. Jellyfin만 실행할 때는 안정적이지만 스택이 겹칠 때만 호스트가 스왑을 사용하거나 프로세스를 종료한다면, 사용자 수를 탓하기보다 공유 호스트의 사양을 조정해야 합니다.
Linux 캐시 때문에 “사용 중인 RAM”은 부정확한 구매 기준입니다
Linux는 유휴 메모리를 파일 시스템 캐시에 의도적으로 사용하므로, 호스트에 사용 중인 메모리가 많아 보여도 회수 가능한 용량이 충분할 수 있습니다. free 열의 수치가 작다는 이유만으로 RAM을 추가하면 비용을 낭비할 수 있습니다.
애플리케이션에 메모리가 필요하면 Linux 파일 시스템 캐시는 회수할 수 있습니다. 유휴 서버에서 RAM 대부분이 시각적으로 “사용 가능” 상태로 돌아오기를 기대하기보다 사용 가능 메모리, 스왑, 메모리 압박 및 OOM 동작을 확인하세요.
시스템이 충분히 예열된 후, 그리고 평소 가장 바쁜 시간대에 다시 측정하세요. 캐시가 많은 건강한 호스트와 Jellyfin의 응답성을 유지하기 위해 계속 메모리를 회수하거나 활성 페이지를 스왑으로 밀어 넣어야 하는 시스템은 다릅니다.
컨테이너에는 회수할 수 없는 작업 집합보다 여유 공간이 더 필요합니다
Jellyfin이 cgroup 또는 Docker 메모리 제한과 함께 실행된다면 총 사용량에는 여러 유형의 메모리가 포함됩니다. 익명 애플리케이션 메모리, 파일 캐시, 공유 메모리 및 커널 사용량은 회수 방식이 서로 다르므로, 단일 비율만으로는 해당 제한이 실제로 위험한지 판단하기 어렵습니다.
컨테이너 메모리 분석은 익명 메모리와 회수 가능한 파일 캐시를 구분하고, 단일 총 사용량 수치보다 cgroup 압박 및 OOM 신호를 확인할 것을 권장합니다.
라이브러리 스캔, 플러그인 작업 또는 두 번째 스트림이 발생했을 때 급증할 여유가 없을 정도로 제한을 안정된 기준 사용량에 가깝게 설정하지 마세요. 반대로 사용 가능한 호스트 메모리가 충분한데 캐시가 많은 단 한 번의 측정만 보고 제한을 두 배로 늘리지도 마세요.
임시 RAM 저장소는 예산을 빠르게 바꿀 수 있습니다
tmpfs 트랜스코딩 디렉터리나 기타 메모리 기반 임시 경로는 실제 시스템 RAM을 사용하며, 여유 있던 서버를 메모리 압박 문제로 바꿀 수 있습니다. 최대 사용량은 파일 크기, 동시 변환 수, 탐색 및 정리 동작에 따라 달라집니다.
RAM 기반 트랜스코딩을 사용한다면 최대 관측 작업 집합을 측정하고 Jellyfin 프로세스 메모리와 별도로 해당 용량을 포함하세요. 예측 가능한 메모리 여유가 임시 쓰기 방지보다 중요하다면 디스크 기반 SSD 임시 경로가 더 나은 선택일 수 있습니다.
메모리 압박이 반복될 때만 업그레이드하세요
| 관측된 신호 | 해석 | RAM 대응 |
|---|---|---|
| 사용 가능한 RAM은 많고 free RAM은 적으며 스왑 압박이 없음 | 건강한 캐시 사용 | 이 신호만으로는 업그레이드하지 않음 |
| 평소 최대 부하 중 사용 가능한 RAM이 급감함 | 작업 집합이 용량에 근접함 | 여유 공간을 추가하거나 동시 서비스를 줄임 |
| 스왑 또는 메모리 회수로 인한 지연이 반복됨 | 메모리 압박이 지연 시간에 영향을 줌 | RAM을 늘리거나 활성 작업 집합을 줄임 |
| 컨테이너 OOM 또는 exit 137 | 제한 또는 호스트 메모리가 부족함 | 진단 후 제한, 메모리 누수 또는 용량 문제를 해결함 |
| 새 VM 또는 무거운 서비스가 예정됨 | Jellyfin 외 작업이 증가함 | 통합 최대 부하를 기준으로 호스트를 구성함 |
호스트가 컨테이너화되어 있다면 DIMM 예산을 변경하기 전에 압박 상태와 cgroup 이벤트를 확인하세요. cgroup v2 워크플로는 memory.high, memory.max, PSI 및 OOM 카운터를 보여 줍니다. 이를 통해 크지만 건강한 캐시 사용량과 지속적인 압박을 더 쉽게 구분할 수 있습니다.
ZimaSpace의 동시 작업 부하에 따른 Jellyfin 용량 분석도 같은 원칙을 따릅니다. 사용자 수는 활성 리소스 수요와 여유가 먼저 소진되는 리소스로 변환한 뒤에야 중요합니다.
측정된 최대 부하 시간대가 건강하게 유지되고 현실적인 업그레이드 경로가 남는 가장 작은 RAM 단계를 선택하세요. 실제 압박을 방지하거나 계획된 공동 호스팅 작업을 지원할 때는 메모리를 늘리는 것이 유용하지만, 호환되지 않는 클라이언트를 Direct Play로 바꾸거나 성능이 약한 트랜스코딩 엔진을 해결해 주지는 않습니다.
구매 가이드
더 읽어보기

사양만 쫓지 않고 세 대 이상의 Jellyfin 서버 후보를 비교하는 방법
먼저 워크로드를 충족하지 못하는 Jellyfin 후보를 제외한 다음, 남은 후보들에 대해서만 결정을 바꿀 수 있는 사양, 소유 비용, 복구 가능성을 비교하세요.

Jellyfin의 보증, 교체 및 복구 비용을 평가하는 방법
더 저렴한 Jellyfin 서버란 반드시 결제 금액이 가장 낮거나 보증 기간이 가장 긴 제품이 아니라, 회수 가능한 소유 비용이 더 낮은 제품입니다.

더 많은 CPU 코어가 실제로 도움이 되는 Jellyfin 작업은 무엇인가요?
측정 결과 Jellyfin 작업이 CPU 병렬 처리에 해당할 때만 CPU 코어를 더 구매하세요. Direct Play와 하드웨어 가속 동영상은 대개 병목을 다른 곳으로 옮깁니다.

