Size: a a a

2020 December 01

RB

Roman Bolkhovitin in rannts
И в халфлайф 3
источник

RB

Roman Bolkhovitin in rannts
источник

SZ

Sergey Z in rannts
Kirill (Cykooz) Kuzminykh
Подожду пока появится 3080 Ti. Есть надежда что в ней будет 16Гб памяти.
Барство!
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Кто-нить ковырялся с Varnish? Как мне заставить его кешировать ответ бекенда в котором стоит
Cache-Control: private
?
Весь гугл забит устаревшей информацией о том как наоборот - запретить варнишу кешировать такое. Старые версии не смотрели на слово private. А новая очевидно смотрит, и не кеширует. Но я даже в документации по слову private не нашёл упоминание этого факта. И тем более как заставить его кешировать такие ответы.
источник

БС

Байт Словович... in rannts
с варнишем работал очень давно, ответы находил в исходниках..  Он плюсовый был, вроде не сильно страшный код..
источник

SA

Sergey Arkhipov in rannts
А если с бэкенда этот хедер не посылать, а Cache-Control ставить уже в Варнише?
источник

SA

Sergey Arkhipov in rannts
Я с Варнишем никогда не работал, поэтому просто предположение
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Не хочется в бекенде это менять, т.к. там всё правильно - это реально контент который можно кешировать только в приватном кеше (т.е. фактически только на стороне клиента).
Но у меня там хитрая двух этапная схема на сервере, которая одним запросом проверяет авторизацию клиента, и только потом достаёт из кеша ответ.
Бекенд про это всё не знает и в общем то не должен знать и слать максимально секурные ответы.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
В общем я кажется нашёл решение. Временно сохраняем оригинальный Cache-Control в другом заголовке, меняем private на public - это заставит Varnish покласть ответ в кеш:
sub vcl_backend_response {
   if (beresp.http.Cache-Control ~ "private") {
       set beresp.http.X-Orig-Cache-Control = beresp.http.Cache-Control;
       set beresp.http.Cache-Control = regsub(beresp.http.Cache-Control, "private", "public");
   }
}
Перед тем как отдать ответ клиенту - возвращаем исходное значение Cache-Control (что бы другие кеши в интернете не кешировали этот ответ):
sub vcl_deliver {
   if (resp.http.X-Orig-Cache-Control) {
       set resp.http.Cache-Control = resp.http.X-Orig-Cache-Control;
       unset resp.http.X-Orig-Cache-Control;
   }
}
источник

AS

Artem Savinov in rannts
как по мне - ты за SRE пашешь
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Нет, это я хочу из своего "бекенда" убрать кастомное кеширование превьюшек для картинок.
Сейчас я просто превьюшки сохраняю как файлы на диске, которые потом nginx раздаёт. Но когда этих файлов становится мульёны, то системе становится худо. И дело не в том что они все в одной папке - это всё правильно сделано, много вложенных папок. А просто в системе пухнут буфферы файловой системы. Прям весь своп выжирают. Приходится по крону их сбрасывать.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Поэтому мне нужен кеш в виде одного большого файла.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Именно это и делает Varnish
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Но т.к. превьюшки приватные, то над всем этим ещё нужно навернуть External Authorization в балансировщике.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
В теории можно и в самом Varnish, но в бесплатной версии это попа-боль. В Envoy эта фишка уже есть встроенная.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Ну и у нас нет вот этих SRE.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Я ещё и тесты под это дело хочу написать, а то иначе всё это может в будущем поломаться при обновлениях.
источник

RB

Roman Bolkhovitin in rannts
Kirill (Cykooz) Kuzminykh
Нет, это я хочу из своего "бекенда" убрать кастомное кеширование превьюшек для картинок.
Сейчас я просто превьюшки сохраняю как файлы на диске, которые потом nginx раздаёт. Но когда этих файлов становится мульёны, то системе становится худо. И дело не в том что они все в одной папке - это всё правильно сделано, много вложенных папок. А просто в системе пухнут буфферы файловой системы. Прям весь своп выжирают. Приходится по крону их сбрасывать.
swappiness=5 и алга ) или они в своп лезут потому что реально памяти не хватает?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Кто именно в своп данные пихает - фиг знает. Но FS буферы под завязку забивают всю оперативу. Может поэтому в своп улетают другие запущенные приложения.
источник

KK

Kirill (Cykooz) Kuzm... in rannts
И вроде бы в теории OS должна как-то учитывать что эти буферы служебные, должна сама их чистить что бы освободить место для приложений. Но по факту этого что-то не видно.
источник