首页主机资讯jellyfin在centos上如何进行性能测试

jellyfin在centos上如何进行性能测试

时间2026-01-19 11:18:03发布访客分类主机资讯浏览1475
导读:Jellyfin 在 CentOS 的性能测试方案 一、测试目标与场景设计 明确目标:评估服务器的并发转码能力、单路转码吞吐/时延、磁盘与网络瓶颈、以及**硬件加速(QSV/NVENC)**带来的收益。 场景覆盖: 直链播放(不转码)验...

Jellyfin 在 CentOS 的性能测试方案

一、测试目标与场景设计

  • 明确目标:评估服务器的并发转码能力单路转码吞吐/时延磁盘与网络瓶颈、以及**硬件加速(QSV/NVENC)**带来的收益。
  • 场景覆盖:
    • 直链播放(不转码)验证网络与磁盘读能力。
    • 单路转码(不同分辨率/码率/编码)验证编解码路径与CPU/GPU占用。
    • 多路并发转码(逐步加压)找到系统饱和点与稳定性边界。
    • 不同客户端与协议(HLS/DASH/DLNA)下的播放流畅度与首帧时延。

二、环境与工具准备

  • 系统与监控
    • 安装常用监控工具:sysstat(提供 iostat/sar)、htop(可选)、以及 Prometheus + Grafana(可选,做长期可视化)。
    • 关键命令:top/htop、vmstat、iostat、sar、free 用于实时与历史性能数据采集。
  • 硬件加速检查
    • Intel QSV:在宿主机或容器内执行 vainfo 检查 iHD 驱动是否正常;Docker 需映射 /dev/dri 设备以启用 QSV。
    • NVIDIA NVENC:安装 nvidia-drivernvidia-container-toolkit,确保容器可访问 /dev/nvidia* 设备。
  • 测试素材
    • 准备多码率、多编码的片段(如 H.264/H.265/AV1,不同分辨率 480p/720p/1080p/4K),覆盖 HDR/SDR、不同色深与帧率(如 24/30/60fps)。
  • 基线数据
    • 记录空载时的 CPU 空闲率、磁盘 IOPS/吞吐、网络带宽 作为对比基线。

三、执行测试与采集数据

  • 系统资源与 Jellyfin 运行态
    • 资源监控:在测试窗口内持续采集 CPU、内存、I/O、网络,如:
      • iostat -x 1(观察 %util、await、r/s、w/s
      • sar -u/-r/-n DEV 1(历史/实时 CPU、内存、网卡吞吐)
      • top/htop 观察 jellyfin/ffmpeg 进程占用
    • Jellyfin 服务与日志:
      • systemctl status jellyfin、journalctl -u jellyfin.service 查看运行与错误日志
      • 通过 API 获取服务器状态:curl http://:8096/api/server/status
  • 转码与并发能力
    • 工具一:使用 jellybench_py 进行并行 ffmpeg 转码基准测试(会占用大量资源,建议在空闲时段运行)
      • 要求:Python ≥ 3.11.2poetry;克隆仓库后 poetry install 进入虚拟环境运行
      • 说明:默认连接 hwa.jellyfin.org 下载测试片段与上传结果(可手动确认不上传),测试可能持续数小时
    • 工具二:使用 ab/wrk 模拟多用户并发访问 Web/API,验证并发会话建立、吞吐与响应时延(适合直链/轻转码场景)
  • 网络与播放体验
    • 多客户端(Web/Android TV/Kodi/DLNA)播放不同清晰度与协议,记录首帧时间、卡顿次数、码率切换情况
    • 若使用 Docker,确保端口映射完整:8096/8920/7359/1900(HTTP/HTTPS/自动发现/DLNA)。

四、结果判读与瓶颈定位

  • 资源瓶颈识别
    • CPU 持续接近 100%:软解/软件转码为主,考虑启用 QSV/NVENC 或降低并发
    • 磁盘 %util ≈ 100%await 高:存储成为瓶颈,考虑 SSD/NVMe、分层存储或降低并发/码率
    • 网卡吞吐接近上限:网络带宽不足,考虑更高带宽CDN/内网加速
    • 内存与 swap 异常:检查缓存/转码临时目录是否占用过多内存或触发换页
  • 硬件加速有效性
    • Intel QSV:vainfo 显示 iHD 正常;Jellyfin 控制台选择 Quick Sync 并开启硬件解码/编码,对比开启前后 CPU 占用与并发路数
    • NVIDIA NVENC:容器内可见 /dev/nvidia*,Jellyfin 选择 NVENC,对比 NVENC 会话数/功耗/温度 与稳定性
  • 稳定性与错误
    • 关注 ffmpeg 报错、超时、花屏、音画不同步,结合 journalctlAPI 状态定位问题。

五、一键化测试脚本示例

  • 说明:以下脚本用于“轻量级并发访问”测试与资源采集,便于快速得到并发能力与系统负载的关联数据;并行转码基准请使用 jellybench_py 单独运行。
  • 用法:chmod +x bench_jellyfin.sh & & ./bench_jellyfin.sh < JELLYFIN_URL> < DURATION_SECONDS>
  • 脚本内容:
#!/usr/bin/env bash
set -euo pipefail

URL="${
1:-http://127.0.0.1:8096}
"
DURATION="${
2:-60}
"
CONCURRENCY="${
3:-10}
"

LOG_DIR="jellyfin_bench_$(date +%F_%H%M%S)"
mkdir -p "$LOG_DIR"

echo "Starting Jellyfin benchmark for ${
DURATION}
s with concurrency ${
CONCURRENCY}
 against ${
URL}
"
echo "Logs in: ${
LOG_DIR}
    "

# 1) System baseline
sar -u 1 "$DURATION" >
 "${
LOG_DIR}
    /sar_cpu.log" &
    
sar -r 1 "$DURATION" >
 "${
LOG_DIR}
    /sar_mem.log" &
    
sar -n DEV 1 "$DURATION" >
 "${
LOG_DIR}
    /sar_net.log" &
    
iostat -x 1 "$DURATION" >
 "${
LOG_DIR}
    /iostat.log" &
    

# 2) Jellyfin service status snapshot
systemctl status jellyfin.service >
 "${
LOG_DIR}
    /jellyfin_status.log" 2>
    &
    1
journalctl -u jellyfin.service -S "$(date -d "1 minute ago" +%Y-%m-%d %H:%M:%S)" -U "$(date +%Y-%m-%d %H:%M:%S)" >
 "${
LOG_DIR}
/jellyfin_journal.log"

# 3) API health
curl -s -o "${
LOG_DIR}
/api_status.json" "${
URL}
/api/server/status"

# 4) Concurrent access with ab (HTTP GET on root)
echo "Running ab for ${
DURATION}
s, concurrency ${
CONCURRENCY}
..."
ab -t "$DURATION" -c "$CONCURRENCY" -q "${
URL}
    /" >
 "${
LOG_DIR}
    /ab.log" 2>
    &
1

echo "Benchmark finished. Logs saved to ${
LOG_DIR}
    "
  • 提示:如需测试转码并发能力,请在确保驱动与权限正确的前提下,单独运行 jellybench_py 并观察 CPU/GPU/磁盘/网络 在测试期间的变化。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: jellyfin在centos上如何进行性能测试
本文地址: https://pptw.com/jishu/785628.html
如何恢复损坏的CentOS Syslog centos appimage如何限制访问权限

游客 回复需填写必要信息