동시 컨테이너 환경에서 Jellyfin 데이터베이스 액세스를 최적화하려면 먼저 데이터베이스 소유자를 한 곳으로 지정한 다음, 잠금 대기 시간, 쓰기 버스트, 스토리지 지연 시간, 워크로드 중첩을 측정하세요.
여러 컨테이너가 동일한 Jellyfin 데이터베이스를 열고 있나요? 아니면 스캔과 사용자 활동 중 하나의 Jellyfin 컨테이너가 느린가요? 연결 수를 무작정 늘리지 마세요. 백엔드 유형, 활성 쓰기 작업, 마운트 위치, 백업 방법, 그리고 대기 중인 정확한 작업을 확인한 후 백엔드나 풀을 변경하세요.
한계가 잠금인지 스토리지인지 입증하기
데이터베이스 사용 중 또는 잠김 메시지, 트랜잭션 지속 시간, I/O 지연 시간, CPU 대기 시간, 동시에 실행 중인 작업을 기록하세요. SQLite는 동시 읽기를 허용하지만 쓰기는 직렬화하므로, 쓰기 작업이 많으면 짧은 메타데이터 업데이트도 대기열에 들어갈 수 있습니다(SQLite 잠금 동작).
통제된 테스트로만 데이터베이스를 빠른 로컬 스토리지로 옮기세요. 스토리지 지연 시간이 줄었는데도 잠금 대기가 계속된다면 문제는 디스크 자체가 아니라 쓰기 작업의 중첩이나 데이터베이스 설계에 있습니다.
동일한 스캔 중 잠금 대기 시간과 스토리지 지연 시간을 비교하세요. 데이터베이스는 빠르지만 쓰기 작업이 대기한다면 다음으로 제어해야 할 대상은 추가 연결이 아니라 작업 일정과 소유권입니다.
데이터베이스 소유권을 지정하고 쓰기 작업을 예약하기
지원되는 백엔드와 배포 방식에서 멀티 인스턴스 조정을 명시적으로 제공하지 않는 한, 하나의 Jellyfin 인스턴스만 특정 애플리케이션 데이터베이스를 소유해야 합니다. 스캔, 메타데이터 새로 고침, 가져오기, 백업, 유지 관리가 같은 시각에 시작되지 않도록 하세요. 하나의 컨테이너 ID와 하나의 영구 경로를 사용하여 재시작 후 두 번째 데이터베이스가 생성되지 않게 하세요.
먼저 스캔 하나를 실행하고, 다음으로 사용자 워크로드 하나를 실행한 뒤, 평소의 동시 작업 조합을 실행하여 검증하세요. 쓰기 작업을 하나씩 추가할 때마다 잠금 대기 시간과 완료 시간을 비교하세요.
쓰기 작업 하나로 테스트한 다음, 평소의 동시 컨테이너 워크로드를 추가하세요. 이를 통해 쓰기 작업이 추가될 때마다 대기열 시간이 늘어나는지, 아니면 무해한 읽기 작업만 추가되는지 확인할 수 있습니다.
다른 백엔드가 필요한 시점을 파악하기
워크로드에 실제로 여러 애플리케이션 쓰기 작업, 더 많은 동시 활동, 또는 SQLite에서 제공할 수 없는 운영 도구가 필요한 경우에는 PostgreSQL과 같은 더 큰 백엔드를 검토할 가치가 있습니다. 하지만 마이그레이션, 자격 증명, 백업, 네트워크 장애, 복구해야 할 추가 서비스도 함께 발생합니다. 한 프로젝트 논의에서는 상용 규모의 동시성이 Jellyfin의 일반적인 홈 서버 대상 범위를 벗어난다고 설명하므로, 가정용 배포에 엔터프라이즈 연결 가정을 그대로 적용하지 마세요(범위가 한정된 동시성 논의).
백엔드 변경을 테스트하는 경우, 애플리케이션 상태를 변경하지 않고 비교를 되돌릴 수 있도록 기존 데이터베이스와 배포 정의를 그대로 사용할 수 있게 유지하세요.
동일한 스캔 중 잠금 대기 시간과 스토리지 지연 시간을 비교하세요. 데이터베이스는 빠르지만 쓰기 작업이 대기한다면 다음으로 제어해야 할 대상은 추가 연결이 아니라 작업 일정과 소유권입니다.
선택한 구성을 검증하기
모든 컨테이너를 재시작하고 원래의 동시 워크로드를 실행한 뒤, 잠금 대기 시간, 지연 시간, 사용자 작업, 백업이 허용된 기준 내에 유지되는지 확인하세요. 명확한 단일 소유자와 테스트된 복원 경로를 갖춘 상태에서 데이터베이스가 워크로드를 완료하면 튜닝을 중단하세요. 되돌릴 수 있는 일정 조정 및 스토리지 점검 후에도 손상, 반복적인 잠금 실패 또는 지원되지 않는 멀티 인스턴스 쓰기가 계속되면 문제를 확대 보고하세요.
쓰기 작업 하나로 테스트한 다음, 평소의 동시 컨테이너 워크로드를 추가하세요. 이를 통해 쓰기 작업이 추가될 때마다 대기열 시간이 늘어나는지, 아니면 무해한 읽기 작업만 추가되는지 확인할 수 있습니다.
백엔드 변경을 테스트하는 경우, 애플리케이션 상태를 변경하지 않고 비교를 되돌릴 수 있도록 기존 데이터베이스와 배포 정의를 그대로 사용할 수 있게 유지하세요.
지원 및 팁
더 읽어보기

Jellyfin에서 중복 작업 또는 가져오기를 방지하는 방법
중복 작업은 대개 스케줄러가 겹치거나 작성자가 둘 이상일 때 발생합니다. 담당자 한 명, 경로 하나, 완료 확인 하나를 지정하세요.

데이터베이스 볼륨이 가득 찬 후 Jellyfin을 복구하는 방법
쓰기 작업을 중지하고, 데이터베이스와 WAL 파일을 보존하며, 상태를 무작정 삭제하지 않고 공간을 확보한 다음 무결성과 원래 워크로드를 확인하세요.

Jellyfin은 왜 누락된 파일을 잘못된 소유자로 다시 생성하나요?
잘못된 소유권은 대개 사용자 식별자 불일치나 다른 가져오기 경로에서 발생합니다. 권한을 변경하기 전에 현재 컨테이너 사용자를 확인하세요.

