新京报
nginx100%video100%不是 Nginx 官方指令☀️或固定错误代码,通常表示视频播放场景中 CPU、网络带宽、磁盘 I/O 或连接数达到 100%。处理重点不是盲目增加 worker,而是先确认是哪项资源跑满,再根⚡据静态 MP4、HLS 分片、反向代理或实时流媒体选择配置。
Nginx 静态文件通常原生支持 Range 请求,播放器可以从中间位置开始读取,也可以在网络中断后继续下载。排查时应使用浏览器开发者工具或播放器网络面板确认 Range 请求是否返回 206、Cont💯ent-Length 是否合理,以及响应是否被应用层重写。
Nginx CPU 100%时,管理员应先确认是否真的由 Nginx worker 消耗,而不是 ffmpeg、视频转码进程、数据库或安全扫描程序占用。静态发送本身通常不是高 CPU 操作,视频 gzip、HTTPS 新连接过多、复杂 rewrite、访问日志同步写入以及应用代理都可能放大处理成本。
Nginx MP4 点播适合文件数量有限、希望直接提供单文件播放和拖动进度的场景。启用了 mp4 模块后,Nginx 可以配合开始时间参数处理部分伪流式播放需求,但该模块必须在编译或安装版本中实际存在,不能把配置写入后就假设功能已经启用。
当 CPU 正常但出口带宽已经达到上限时,继续调整 Nginx 指令不会凭空增加带宽;当磁盘等待长期过高时,单纯增加 worker 也不能替🔑代存储升级或缓存分流。ngi💯nx100%video100%的正确解决路径,是先确定瓶颈,再在传输协议、缓存、连接管理和基础设施之间做对应调整。
如果 Nginx 主要提供已经编码完成的 MP4 文件,正常情况下 CPU 不应因为单纯发送文件而长期满载;如果 CPU、带宽和磁盘同时升高,常见原因是并发下载、重复回源、开💯启视频 gzip、TLS 握手过多或后端转码混入了 Nginx 主机。所谓“解锁视频流媒体的极致性能”,实际需要建立在资源定位、断点续传、缓存策略和分发架构都匹配的基础上。
Nginx HLS 分发适合把视频拆成播放列表和多个短分片的场景💪。播放器会持续请求新的分片,因此请求数量可能明显高于单个 MP4;HLS 需要重点优化小文件缓存、文件打开次数、缓存命中率和跨域🎆响应,而不是只关注 sendfile。
Nginx worker_processes 设置为 auto 通常比手工写一个过大的数字更稳妥。增加 w▶️orker 数量不🔥能解决带宽不足、磁盘延迟或上游转码过慢,过多 worker 还可能增加上下文切换和内存消耗。limit_rate 可以控制单请求发送速度,但它只能缓解突发占用,不能替代容量规划。
Nginx 静态 MP4 服务的核心任务是高效读取文件并直接发送,不应在每个请求中重复进行压缩、转码或复杂脚本处理。视频目录应尽量与动态应用分开,避免 PHP、Java 或其他后端进程参与每一段文件传输。
Nginx 反向代理视频时,性能瓶颈可能位于上游应用、对象存储、代理缓冲区或源站到 Nginx 的链路。播放器能够打开页面,不代表视频字节流已经稳定传输,必须分别查看客户端响应时间和 upstream_response_time。
nginx100%video100%的排查结果必须通过同一文件、同一网络条件和相近并发量复测,不能只看修改配置后短时间内的监控曲线。单个浏览器播放成功,只能证明基本可用,不能证明高并发传输稳定。
Nginx 访问日志应至少记录 status、request_time、body_bytes_sent、request_length、http_range 和 upstream_response_time。top 或 htop 可以确认 CPU 进程,iostat 可以观察磁盘等待,ss 可以统计连接状态,流量监控则用于确认出口是否真正饱和。日志中的 206 响应比例较高,通常说明播放器正在进行范围请求或断点续传。