Назад | Перейти на главную страницу

nginx настраивает буферы uwsgi и gzip для разных сценариев использования

Я пытаюсь настроить две группы URL-адресов для относительно разных сценариев использования и потребления ресурсов в nginx. Оба обслуживаются одним приложением uwsgi.

Требуется, чтобы оба файла были сжаты с помощью gzip, а XML-файлы также должны быть кэшированы 1 час.

Чего я не совсем понимаю, так это значения количества буферов и того, как оптимально установить их количество и размеры в соответствии с ожидаемым трафиком и размером содержимого как для uwsgi, так и для gzip.

Кроме того, для приведенной ниже конфигурации я получаю сообщение об ошибке от nginx:

"uwsgi_busy_buffers_size" must be less than the size of all "uwsgi_buffers" minus one buffer in /etc/nginx/nginx.conf:113

uwsgi_busy_buffers_size, похоже, недокументирован.

location ~ /path/to/(.+)\.xml {
    uwsgi_hide_header       "Set-Cookie";
    uwsgi_ignore_headers    "Set-Cookie";
    uwsgi_buffers           2 8M;
    uwsgi_cache             xmlfiles;
    uwsgi_cache_key         $request_uri;
    uwsgi_cache_valid       200 1h;
    uwsgi_cache_valid       04 5m;
    uwsgi_cache_use_stale   error;
    expires                 +1h;

    gzip                    on;
    gzip_types              application/xml;
    gzip_buffers            2 8M;

    try_files               $uri @backend;
}

location / {
    try_files       $uri @backend;
    gzip            on;
    gzip_buffers    8 256k;
    uwsgi_buffers   8 256k;

    try_files       $uri @backend;
}

location @backend {
    include      uwsgi_params;
    uwsgi_pass   unix:///tmp/uwsgi-app.sock;
}

Пожалуйста помоги. nginx 1.0.14

uwsgi_busy_buffers_size имеет то же значение, что и fastcgi_busy_buffers_size, но для uwsgi.

Ограничивает общий размер буферов, которые могут быть заняты отправкой ответа клиенту, пока ответ еще не полностью прочитан. В то же время остальные буферы могут использоваться для чтения ответа и, если необходимо, буферизации части ответа во временный файл. По умолчанию размер ограничен двумя буферами, установленными директивами uwsgi_buffer_size и uwsgi_buffers.

p.s. значения по умолчанию для директив, связанных с буферами, в nginx имеют оптимальные значения для большинства случаев. Поэтому настраивать их следует только в том случае, если вы полностью понимаете, что делаете и почему.

Как примечание, максимально допустимый размер для каждого буфера gzip составляет 8k.

Чтобы получить тот же общий размер, вам нужно будет использовать gzip_buffers 2048 8k;.

Я не уверен, применяется ли такое же ограничение к uwsgi_buffers.

В общем, лучше иметь больше маленьких буферов, чем несколько огромных буферов.