我正在使用 Nginx 为直播 (HLS) 提供 .ts 文件。一切正常,但文件响应时间存在问题。有时,从服务器收到的一些 .ts 文件的响应时间会出乎意料地长,这在我们的用例中是有问题的。
我已经使用 python 脚本来查找问题所在。
在此屏幕截图中,完整响应时间是发送请求和收到完整响应之间的时间。显示的第二个参数是发送请求和收到响应之间的时间。(我在 python 的请求包中使用了 response.elapsed.total_seconds())。在慢速请求中,完整响应时间较长,但 response.elapsed.total_seconds() 是可以的。(我所说的较长是指平均响应时间的 3-4 倍。)
除了这个问题之外,我还有另一个问题,即响应时间(response.elapsed.total_seconds())和完整响应时间都很高。这种情况发生的频率较低(可能每 200 个请求发生一次),并且响应时间比第一种情况高得多。
我应该提到,我在这台机器前面还有一些其他机器来代理和缓存文件。但无论我请求缓存机器还是主机器,结果都是一样的。
这是我的 Nginx 配置:
user root;
worker_processes 16;
worker_rlimit_nofile 1000000;
master_process on;
pid /run/nginx.pid;
events {
worker_connections 500000;
accept_mutex off;
multi_accept off;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
server_tokens off;
keepalive_timeout 150;
# keepalive_requests 5;
aio on;
gzip on;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
client_body_buffer_size 1k;
client_max_body_size 1k;
client_body_timeout 12;
client_header_timeout 12;
send_timeout 10;
tcp_nodelay on;
sendfile_max_chunk 1m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2;
proxy_intercept_errors on;
proxy_http_version 1.1;
vhost_traffic_status_zone shared:vhost_traffic_status:10m;
underscores_in_headers on;
recursive_error_pages on;
server {
listen 80 backlog=10000000;
location /tmp {
access_log /cache/nginx.log main;
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /cache/hls;
add_header Cache-Control no-cache;
}
}
Nginx 访问和错误日志没有显示任何异常。无论是良好的响应还是缓慢的响应。
到目前为止我找不到有关此问题的任何信息。希望我能在这里找到答案。