
我正在使用 Nginx 提供用於即時串流媒體 (HLS) 的 .ts 檔案。一切正常,但文件的回應時間有問題。有時,從伺服器接收到的某些 .ts 檔案的回應時間出乎意料地高,這在我們的用例中是有問題的。
我使用了 python 腳本來尋找問題所在。
在此螢幕截圖中,完整回應時間是發送請求和收到完整回應之間的時間。顯示的第二個參數是發送請求和接收回應之間的時間。 (我在python的requests套件中使用了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存取和錯誤經驗沒有顯示任何異常。無論是良好的反應還是緩慢的反應。
直到現在我還沒有找到關於這個問題的任何資訊。希望我能在這裡找到答案。