@bushart

Как избавиться от попадания запроса в очередь, при использование nginx как кеша картинок?

Всем привет,
Есть nginx сервер, который отдает картинки по следующей конфигурации
fastcgi_cache_path /media/ssd18/nginx-documents-cache levels=1:2 keys_zone=documents:100m inactive=30d max_size=250g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

    location /documents-cache/ {
        try_files $uri /index.php =404;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_cache_key   $request_uri;
        fastcgi_cache documents;
        fastcgi_cache_valid 200 30d;
        include fastcgi_params;
    }


Картинки генерируются php скриптом, но, по идее они кешируются и для повтрого обращения должны доставаться из кеша. И это работает отлично, пока я подгружаю таким образом 1-2 картинки на страничку. Но есть места на сайте, где необходимо загрузить сразу 16 картинок. И тут система начинает работь не как ожидается. Если бы я загружал статичные картинки без кеша, то они бы грузились все вместе, паралельно. Но в случае с кешем бразуер загружает первые 5, а остальные держит в очереди. Загрузив 5 штук он принимается еще за 5-6 и т.д.

Я проверил количество воркеров - их 8 штук, по 1024 соединений на каждый - в этом месте проблемы точно нет. Теперь сижу ломаю голову, почему nginx не хочет отдавать все картинки разом.

Подскажите пожалуйста почему так происходит или, хотя бы, в какую сторону копать?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
ayazer
@ayazer
Sr. Software Engineer
в соотв. с RFC 2616 браузер ограничивает кол-во одновременных запросов к 1 серверу. И если хром дает одновременно выполнить 5-6 запросов, то у других браузеров лимит еще меньше. Так что проблема не в нджинксе.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы