Nginx 服务器响应时间对于数百个请求中的一个来说出乎意料地长

Nginx 服务器响应时间对于数百个请求中的一个来说出乎意料地长

我正在使用 Nginx 为直播 (HLS) 提供 .ts 文件。一切正常,但文件响应时间存在问题。有时,从服务器收到的一些 .ts 文件的响应时间会出乎意料地长,这在我们的用例中是有问题的。

我已经使用 python 脚本来查找问题所在。 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 访问和错误日​​志没有显示任何异常。无论是良好的响应还是缓慢的响应。

到目前为止我找不到有关此问题的任何信息。希望我能在这里找到答案。

相关内容