北京日报
如果 Nginx 视频服务已经出现播放卡顿、响应变慢、服务器负🚀载升高,优先查看 CPU 使用率、出口带宽、磁盘 I/O、活跃连接数和错误日志。静态 MP4 大文件下载、HLS 或 DASH 小切片请求、反向代理直播流,产生高负载的原因并不相同,不能使用同一套配置直接处理。
静态视频文件应优先确认响应头是否支持 Range 请求,并检查播放器是否收到正确的 Content-Length、Content-Range 和 Accept-Ranges。视频文件通常不适合再使用 gzip 压缩,重复压缩会增加 CPU 消耗,却很难带来有效体积下降。
当 CPU 不高但带宽达到上限时,增加 worker 进程没有帮助;当带宽充足但磁盘等待很高时,扩容网卡也不能解决问题;当连接数很高而请求耗时异常时,应优先检查慢客户端、超时和上游服务。按照资源瓶颈选择措施,才能把视频分发恢复到可预测状态。
nginx100%video100% 不是 Nginx 官方错误码、配置项或标准监控指标,通常表示 Nginx 承载视频文件、直播流或切片请求时,CPU、带宽、磁盘读取、连接数中的一项或多项达到 100%。排查重点不是修改一个名为“video100%”的参数☀️,而是先确认到底是哪类资源耗尽。
直播代理配置应单独检查 proxy_read_timeout、proxy_send_timeout、proxy_buffering 和上游连接池。关闭代理缓冲并不适合所有场景:实时性要求高的直播转发通常需要减少等待,但点播代理更需要合理缓存,避免每次播放都重新读取源站。
worker_processes 通常可以根据 CPU 核数和实际压测结果设置,worker_connections 只代表单个工作进程可管理的连接规模,不等同于可承载的观看人数。文件描述符上限、内核连接队列、带宽上限和上游服务能力同样需要匹配。
静态 MP4 文件由 Nginx 直接发送时,主要压力通常落在网卡和磁盘,而⭐不是视频编码本身。Nginx 不会因为“理解视频内容”而自动完👍成转码;如果 CPU 明显升高,需要进一步检查 TLS 加密、代理转发、日志、限速模块或异常请求。
HLS 或 DASH 视频服务的压力结构与单个 MP4 下载不同。播放器会连续请求 m3u8、mpd、ts、m4s 或其他媒体分片,文件数量更多、请求频率更高,短请求集📢中出现🎊时,连接和访问日志可能先达到瓶颈。
Nginx 反向代理✅直播流时,连接会长期保持,资源消耗取决于观看人数、上游连接数和下游网络质量。慢客户端会让代理连接持续占用,直播源异常则可能造成大量重连,形成连接数和上游请求同时升高。