Super
остальные не нужны для моих задач
Super
если я допустим в access вывел какие-то данные, как их скормить nginx, чтобы он их закешил в свой кеш? ngx.location.capture?
Maxim
дело не в необходимости использования фаз )
Super
я просто не понимаю, как мне из луа сказать нгинкс закешировать эту страницу
Super
в локейшене я не могу прописать это т.к. он закеширует не то что надо
Super
только если из луа на конкретный локейшен только в конкретном случае отправиться
Super
я его видел. т.е. он кеширует как раз в этот кеш нгинкс?
Super
я так понял он тоже в памяти живет
Super
по сути мне нужно то же самое, что делает нгинкс, только управляемое
Super
и 2 метода get set
Maxim
и 2 метода get set
Вы не забывайте о том что можно сделать механизм который будет переодически очищать от старого хлама ваш кэш, это всего пару строчек и совсем почти не больно
Super
я понимаю, что есть ttl
Maxim
ttl указали и в дополнение еще скрипт для принудительной очистки например, ну чтоб наверняка
Super
что если я указал ттл и все равно не хватит памяти?
Super
это легко может быть т.к. данных в разы больше, чем есть кеша
Super
проще не указывать и просто позволить бд самой эвакуировать
Super
а актуальности данных нет, хоть год пускай лежат
Super
если надо поменять, то у меня есть проверка перед взятием из кеша, стоит ли их менять
Maxim
тогда вам нужен Cloudflare и его кэш, что бы не беспокоиться за кэш самостоятельно, нам нравится и мы не жалуемся на него, ваще про кэш забыли
Super
клаудфларе использую, но он не особо помогает. их edge ttl cache можно задать мес, но по факту оно лежит по несколько дней
Super
есть варианты хитрить с ними, но и они не помогают
Super
а свой кеш на 400гб лишним никогда не будет на ссд
Maxim
что же у вас там такое на 400Гб
Super
много сайтов по с миллионами страниц, ничего необычного )
Super
да или не сайтов а просто данных
Super
т.е. не страниц
Maxim
а зачем вам именно такой кэш в 400Гб? с диска все равно медленно читает
Super
это все равно будет быстрее, чем заново запросить дб, произвести все рассчеты и т.д.
Maxim
может быть пересмотреть палитику партии и задуматься о более оперативной очистке и не хранить 400Гб данных которые могут быть давно протухшими
Super
ссд достаточно быстр, у него объем чтений равен пропускной способности, а количество особо не ограничено
Super
если будет много трафа, там такая мясорубка будет, что эти 400гб будут целиком раз в день перезаписываться
Maxim
вы в сеть упретесь и ваш ssd тут ничем не сможет помочь
Super
я его использую
Maxim
например у нас есть 150 000 картинок для карточек товара, каждому фиду и фронт приложению нужна картинка своего размера, мы не храним обрезки, а просто быстро режем и отдаем в браузр, и не нужен нам кэш, даже забыли про него
Super
по поводу ссд - я могу взять сервер и поставить туда 12 ссд по 2тб например - 24тб кеша
Maxim
зачем вам столько старого хлама ?
Super
поэтому-то и ищу решения именно дисковые
Maxim
я про кэш
Super
ну задачи массивные, данные на самом деле актуальные
Maxim
как вы актуальность будете проверять на 24Гб ?
Maxim
24Гб актуальных данных в кэше?
Super
ttl + по ключу запрос
Maxim
кем и где вы работаете?
Super
а вы полковник? ) на себя работаю, разные проекты онлайновые
Maxim
ttl + по ключу запрос
что мешает вам сделать то же самое но начать не с 24Гб, а с 200-400Мб ?
Super
вы же видели мой скриншот, там 2 бд по 37гб
Super
и это при том, что я ооочень ужимаю данные в редисе
Super
я вместо имени ключа использую число и ужимаю его до 249 ричной системы исчисления, чтобы символов меньше было
Maxim
вы же видели мой скриншот, там 2 бд по 37гб
ну то что вы показали это не совсем то что вы думаете
Super
вместо данных тоже числа, там где можно использую битмапы
Super
да, хочу расшириться
Super
меня сейчас ограничивает чисто железо
Maxim
RES это не совсем точное количество занятой RAM
Maxim
Но близко
Maxim
тогда вам ничего не остается как взять весь ваш кэш и хранить в БД в табличке с индексными полями, надежно и достаточно быстро
Super
мне еще нужна автоэвакуация данных, если бд переполнена
Snusmumriken
меня сейчас ограничивает чисто железо
Ох блин. Фигня в том, что для того кеша который тебе нужен (сотни миллионов страниц на диске), нужен индекс чтобы эти странички быстро искать. Притом добавление новых страничек требует достройки индекса, а удаление — считай что полной перестройки, операции довольно длительные. Можно попробовать извратиться и кешировать файликами в папочках, с таким деревом должно быть сравнительно быстро, плюс отдельные документы легко жать. Ну и удалять тоже должно быть норм: стёр папку данного сайта.
Super
как вариант - поставить 2 нгинкса, одним с другого проксировать и использовать proxy_cache
Maxim
мне еще нужна автоэвакуация данных, если бд переполнена
а что у вас за проблема такая с местом под данные если предвидится Терабайты данных в кеш?
Super
пробовал, он хуже сфинкса
Maxim
пробовал, он хуже сфинкса
не буду спрашивать почему вы так решили, на нет и суда нет )
Super
он медленнее, я тестировал на своих данных
Super
а в рамках одного нгинкса можно как-то пробросить на локейшен чтобы он там закешил своим механизмом?
Maxim
он медленнее, я тестировал на своих данных
медленней чем что? все же в сравнении, верно?
Super
чем эластик
Maxim
а в рамках одного нгинкса можно как-то пробросить на локейшен чтобы он там закешил своим механизмом?
https://github.com/weserv/images/blob/4.x/config/nginx/conf.d/imagesweserv.conf Может чем то вам будет полезен этот конфигурационный файл
Super
спасибо, сейчас гляну
Super
у меня слишком уж сложная задача, такого там нету. но попробую реализовать просто двумя нгинксами
Super
у меня вот какая ситуация location { access_by_lua_block { тут в каких-то особых случаях есть в наличии контент и его нужно отправить в кеш, причем он не тот. что выдается } далее proxy_pass и фильтры }
Super
писать самому на диск - хорошая идея. но когда диск заполнится, надо каким-то образом найти самый ненужный файл и удалить его, проверить место и записать. для этого мне самому придется этот индекс вести и изобретать колесо.
Super
плюс умные бд могут это делать постепенно, когда нагрузки нет. заранее место освобождать без спешки.
Super
плюс тут надо очереди на запись делать, если скажем возникнет ситуация, что единовременно 1 поток освобождает под себя данные и хочет записать, а другой в это время записал, то возникнет проблема.
Super
т.е. писать самому бд это целая огромная задача
Maxim
в фазе access_by_lua_block обычно выбрасывают ошибку если юзверь не прошел проверку, никаких других действий обычно там не производят