<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">28 января 2013 г., 11:25 пользователь Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im">On Mon, Jan 28, <a href="tel:2013" value="+9722013">2013</a> at 03:34:00AM -0500, Trurl wrote:<br>
<br>
> Не могу ничего понять из документации.<br>
><br>
> Допустим у меня вот такой набор:<br>
> proxy_temp_path /var/lib/nginx/proxy 1 1;<br>
> proxy_cache_path /var/lib/nginx/proxy/cache levels=1:1<br>
> keys_zone=main_cache:256m inactive=42h max_size=5m;<br>
> proxy_buffer_size 8k;<br>
> proxy_buffers 32 8k;<br>
> proxy_busy_buffers_size 64k;<br>
> proxy_max_temp_file_size 0;<br>
> # ( рекомендовали тут так для ограничения дискового пространства,<br>
> используемого nginx - если что в корне не верно - поправте меня)<br>
><br>
> И при таком наборе nginx все равно запихал в кеш файл размером 249M, выкинув<br>
> всю мелочь и остался доволен.<br>
> Что я делаю не так? Как ограничить максимальный размер кешируемого файла?<br>
<br>
</div>Сейчас - никак. Ну то есть с бекенда можно явно запретить<br>
кеширование, либо же через proxy_no_cache. Какой-либо директивы<br>
"не кешировать файлы более N" - нет.<br></blockquote><div><br></div><div>У меня бекендов много разных, там и апачи, и nginx (прочие удалось заменить на nginx), в зависимости от целей. А proxy_no_cache не шибко применишь, если размер файла заранее не известен.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
[...]<br>
<div class="im"><br>
> > Специальный процесс “cache manager” следит за максимальным размером кэша,<br>
> заданным параметром<br>
> > max_size, и при превышении его размеров удаляет наименее востребованные<br>
> данные.<br>
> Это я вообще не понял. Общий размер кеша, на практике, ничего общего с<br>
> max_size не имеет, зато подозрительно совпадает с размером, заданным в<br>
> keys_zone, который, вроде бы должен задавать размер разделяемой памяти.<br>
<br>
</div>Размер кеша может превышать установленный максимальный размер<br>
(max_size), если cache manger ещё не успел его уменьшить,<br>
либо он не может это сделать из-за того, что элементы кеша<br>
используются рабочими процессами.<br></blockquote><div> </div><div>Я это учитываю, разовые превышения не в счет. Я про то что _суммарный_ размер кеша в долгосрочной перспективе и с приличной нагрузкой устаканивается в точно в размер keys_zone (!), хотя в документации об этом вообще ничего нет. При этом max_size вообще ни на что не влияет.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
При max_size=5m и характерном размере файлов 249m - ничего<br>
удивительного, что наблюдаемая реальность мало совпадает с<br>
желаемой.<br></blockquote><div> </div><div>Не понял про "характерный", на тесте только один такой файл был, при его протаскивании из кеша выкидывается почти все (остается файликов на сумму дополняющую до 256m). Если файл крупнее 256m - то он не кешируется. Невзирая на то, что "Сейчас - никак". Но меня такое ограничение не очень устраивает.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="im"><br>
> Размер proxy_temp_path вообще не понятно как лимитируется. На практике -<br>
> достижением 100% забитости диска, после чего все помирает.<br>
<br>
</div>Совсем в теории - там может быть максимум worker_processes *<br>
worker_connections * proxy_max_temp_file_size в отсутствии кеша, и<br>
то же с заменой proxy_max_temp_file_size на максимальный размер<br>
ответа, возвращаемого бекендом, если кеш включён.<br></blockquote><div><br>по такой логике при proxy_max_temp_file_size 0; вообще ничего не должно заполняться, а у меня до 50 гигов набегает.<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
На практике - под proxy_temp_path просто следует отводить<br>
достаточно места.</blockquote><div> </div></div>Вот только суммарный контент у меня измеряется в террабайтах. А кол-во коннектов до 20к на каждый сервер. На тестовом канал 200мбит. Что будет когда я его поставлю на продакшен, где отдельный гигабит на каждый сервер - я себе плохо представляю. Видимо там так и останется сквид, у которого со всем этим проблем нет. Зато у него со стабильностью проблемы...<br>
<br></div></div>