Не полностью отдается файл клиенту

ingtar nginx-forum на forum.nginx.org
Пт Июн 2 07:06:08 UTC 2017


Добрый день!
Столкнулся с непонятной проблемой. Имеется сервер для раздачи файлов
клиентам. При большом кол-ве запросов иногда начинают происходить следующие
вещи на стороне клиента - скачиваемый файл (через curl) отдается меньшего
размера но ответ 200
В утилите siege при 100 конкурентных пользователях выглядит так:

HTTP/1.1 200    26.85 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    27.62 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    28.38 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    29.20 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    29.96 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    30.79 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    31.54 secs: 13925686 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    91.80 secs: 11313152 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    91.82 secs:  249483 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    91.84 secs:  270971 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    91.86 secs:  257541 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    91.88 secs:  265599 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml
HTTP/1.1 200    91.89 secs:  262913 bytes ==> GET 
/test/212879312926726118532324622460834138521.xml

Как видно из времени ответа - он начинает держать клиента и потом закрывает
коннект с 200 кодом. 
Дебаг лог мне не помог, могу его приложить но он очень большой и найти
именно проблемный коннект не получилось

Конфиг очень большой, но вот урезанный вариант с локейшеном
server {
    listen 80 default_server;
    listen 443 ssl http2;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH
EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

    keepalive_timeout 40 40;
    keepalive_requests 500;

    ssl_certificate_key example.key;
    ssl_certificate example.crt;

    error_log   /var/log/nginx/error.log debug;
    access_log  /var/log/nginx/access.log;


    add_header Cache-Control  'public, max-age=315360000';
    add_header Expires   'Tue, 15 Nov 2986 11:00:00 GMT';


    location /test/ {
        error_log /var/log/nginx/test-error.log;
        access_log off;
        root /var/local/storage/ru;
        rewrite '^/test/([0-9]*)(\d{2})(\d{2})(\d{2})\.(xml|xls|xlsx|xlsm)'
/test/$4/$3/$2/$1$2$3$4.$5 break;
    }
}

В какую сторону можно посмотреть?..

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,274594,274594#msg-274594



Подробная информация о списке рассылки nginx-ru