수백 개의 요청 중 하나에 대해 Nginx 서버 응답 시간이 예기치 않게 높습니다.

수백 개의 요청 중 하나에 대해 Nginx 서버 응답 시간이 예기치 않게 높습니다.

저는 라이브 스트리밍(HLS)을 위해 .ts 파일을 제공하기 위해 Nginx를 사용하고 있습니다. 모든 것이 잘 작동하지만 파일의 응답 시간에 문제가 있습니다. 때때로 서버에서 수신된 일부 .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 액세스 및 오류 로그에는 비정상적인 내용이 표시되지 않습니다. 좋은 반응도 느린 반응도 아닙니다.

지금까지 이 문제에 대해 아무것도 찾을 수 없었습니다. 여기서 답을 찾을 수 있기를 바랍니다.

관련 정보