ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: proxy vs content-range


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: proxy vs content-range
  • From: "SaveFrom.net" <savefrom@xxxxxxxxx>
  • Date: Wed, 23 Dec 2009 03:39:03 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=yY1aI4zDEolIADftZtf2UlZKvuakllm4MCuXPFPZtXM=; b=iL9VY0b0IDISj+eocPpl9XWu2dmcqhosD8B4I25hi5LbtLW/ncMQf1QRJ45jLDsEpx aZg/RUj7C99I7Sj7W3PXL2HgZJSw+ui1fs4goGgy5xDzQQPDdZTz2eQJneY/uCwAQQZD Kj3C4ZSvt9MlWtbTLQhaEo2OISNokXVNuA0XU=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=yEZaW0M+ATljaJbEQKyGz74/P39NEMkEinQ5K5Em6cYuXVDQC63TC4yG5NmZz7G93K 1/8JLA1++y2iED5Z+6g6KW/fl0FBE3OMR12XiU80jg/Q4spteI1SoPvd9C4SE4EXJ1mQ KWZkH6fw7eHHU5bMdmegkJDMXNBHQ91AOGVu8=
  • In-reply-to: <1261502676.9546.34.camel@localhost>
  • References: <1261496323.9546.31.camel@localhost> <f4079bd80912220835q6e768784i9d68172f1574d008@xxxxxxxxxxxxxx> <1261502676.9546.34.camel@localhost>

Это размер дискового буфера. Т.е. сначала файл ответ тянется в буфер, а если его размера не хватает, то сохряняется в дисковый буфер.
если отключить буферезацию на диск - nginx будет тянуть ровно столько, на сколько хватит буферов в памяти. остальное не будет прочитано из соединения с бекендом.

У Вас же, вероятно, происходило следующее: пользователь запрашивал данные с бэкэнда в 10 потоков, nginx на каждый поток тянул файл полностью(со смещением) и сохранял в дисковый буфер. Рекомендую попробовать ограничить дисковый буфер.

 Есть тонкость, которую следует иметь ввиду: очередное чтение из бекенда будет только после полного освобождения полного буфера proxy. и надо смотреть внимательно на таймауты настроенные в бекенде. e.g. если proxy_buffers 2 64k; limit_rate 1k; - то в течении 64 секунд из бекенда ничего читаться не будет, и таймаут на бекенде надо ставить больше 64 секунд. то же относится к просто медленным клиентам.

С уваженем, Антон

22 декабря 2009 г. 20:24 пользователь Bogun Dmitriy <vugluskr@xxxxxxxxxxxxxxx> написал:
В Втр, 22/12/2009 в 19:35 +0300, SaveFrom.net пишет:

Могу ошибаться, но на мой взгляд разумнее использовать proxy_max_temp_file_size
Директива задаёт максимальный размер временного файла для проксированного
ответа. "proxy_max_temp_file_size 0" запрещает создание файла.
А где про нее можно почитать?
Что происходит если отдаваемое "тело" превышает этот размер? Ведь если там будет стоят n метров, nginx должен их выкачать, прежде чем сможет понять что "тело" больше чем proxy_max_temp_file_size.


22 декабря 2009 г. 18:38 пользователь Bogun Dmitriy <vugluskr@xxxxxxxxxxxxxxx> написал:
Здравствуй, all.

Сегодня возникла одна проблема, которая поставила передо мной вопрос, как работает сохранение ответа backend'а в proxy_temp_path в случае наличия в запросе content-range.

Моя проблема заключалась в том, что файлик размером в ~4gb стала тянуть качалка в ~10 потоков, что привело к очень большой нагрузке на FS и окончанию на ней места. Причем место занимали файлы уже удаленные с FS но еще не закрытые nginx'ом.

Конфиг вхоста:
server {
    listen      1.1.1.1;

    server_name .vhost.dom;

    client_max_body_size 200m;

    access_log  /var/log/nginx/vhost-access.log generic;
    error_log   /var/log/nginx/vhost-error.log info;

    root /srv/vhost.dom/www/htdocs;

    location / {
        proxy_pass         http://upstr_vhost;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

На upstream'е обыкновенный apache, который отдавал файл с ФС. Настроить отдачу напрямую не всегда возможно, т.к. за содержимое вхоста "отвечает" другой человек...

Направьте в сторону информации о работе модуля proxy при наличии заголовка content-range.



_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.