The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Http-сервер nginx обслуживает более половины хостов рунета, opennews (??), 04-Июн-11, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


33. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от zoonman (ok), 06-Июн-11, 00:26 
Ну ка расскажите мне про то, как вы будете кэшировать к примеру список новых комментариев к тем статьям, которые читал конкретный пользователь, когда у вас хотя бы с десяток юзеров на сайте за последнюю минуту и каждый из них может написать новый комментарий в любой момент?
В таком случае нужно event-based cache management применять. Т.е. сбрасывать/обновлять весь релевантный кэш (а его еще надо найти, а еще хранить индивидуально под каждого пользователя свой).
Кэширование нужно применять там, где в нем есть смысл. Например скэшировать 100 картинок со страницы и быстро отдать их. Но лучше отправить верстальщика на учебу, где он освоит спрайты и вместо 100 картинок будет 1. И о чудо, сервер перестанет загибаться от нагрузки потому, что вместо 1000 запросов к серверу будет 10.
Ответить | Правка | Наверх | Cообщить модератору

41. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от Аноним (-), 06-Июн-11, 11:01 
> минуту и каждый из них может написать новый комментарий в любой момент?

Ну не увидит юзер коменты за последнюю секунду. Трагедия, однако :). А как кешировать? Да как обычно. А при написании комента попутно можно инвалидировать кеш, если уж по уму все делать. Правда это оверкилл: непоказ коментов за последнюю секунду большой проблемой не является, если ориантироваться на практику а не эстетствовать :P

> Кэширование нужно применять там, где в нем есть смысл.

Ну вот когда вас опубликуют на сдешдоте/хабре/чем там еще - узнаете где в нем есть смысл :)

> Например скэшировать 100 картинок со страницы и быстро отдать их.

Чего? Кого? Зачем? Кешируют обычно результат работы скриптов, чтобы не дергать на всю толпень юзеров постоянно серверные скрипты. А то если вам 5000 одновременных юзеров придет - вы немного задолбаетесь на них php или что там у вас в 5000 экземплярах дергать. А в статику закешить - и пусть отдается себе. Ну будет страница с коментами 1-секундной давности. Ужас!

> И о чудо, сервер перестанет загибаться от нагрузки потому, что вместо 1000 запросов к серверу будет 10.

О чудо, любой школотенок с ab может прийти к вам с своего вшивого диалапа 1000й "юзеров". Параллельных потоков. Когда опач форканет 1000 процессов и пых попробует выполнить скрипт в 1000 копий - сервер радостно и быстро сдохнет. Классический метод уронить дефолтовый апач :). Ему много лет и он до сих пор работает. Поскольку затраты ресурсов на стороне клиента много меньше затрат сервера на их обслуживание.

Ответить | Правка | Наверх | Cообщить модератору

44. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от zoonman (ok), 06-Июн-11, 11:58 
> Ну не увидит юзер коменты за последнюю секунду. Трагедия, однако :). А

А если у вас магазин? Товар допустим купили, а человек делает свой заказ и получает отказ перед самым носом потому, что этот товар только что купили. А если бы увидел актуальные данные, возможно выбрал бы другой товар. А так у него будет негативная ассоциация.

>  А при написании комента попутно можно
> инвалидировать кеш, если уж по уму все делать.

Про это я выше написал.

> Ну вот когда вас опубликуют на сдешдоте/хабре/чем там еще - узнаете где
> в нем есть смысл :)

Знаем.

Насчет школоты есть соответствующие ограничения. Ни один разумный админ не будет оставлять апач по умолчанию.

Динамика должна оставаться динамикой. Она для этого была создана.

Ответить | Правка | Наверх | Cообщить модератору

46. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от Codir (?), 06-Июн-11, 12:04 
Не распаляйтесь на школоло - им законы физики вообще нипочём! :) "Ну не увидит юзер коменты за последнюю секунду. " - разве не виден ламерский подход?

Кэш - это всё забавно, но "динамика" названа динамикой не потому, что другого слова не нашлось, а потому, что это ПРОТИВОПОЛОЖНОСТЬ статике. Но не всем это дано понять...

Ответить | Правка | Наверх | Cообщить модератору

86. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от Аноним (-), 07-Июн-11, 18:31 
> не всем это дано понять...

Ой, а вот через секунду после того как мне ваш сервак страницу отдал, там новый юзер откоментил. А чойта эта ваша динамика не генерит мне страницу заново и не показывает его? Как максимум что-то такое делается на аяксе, только это не противоречит использованию нжинкса и тормознутость в основном определится архитектурой серверной стороны приложения, насколько оно эффективно обрабатывает множественные параллельные запросы. При этом кстати можно быстро выстрелить тяжелые части статикой из кеша, а остальное подтянуть аяксом по мере готовности и ненапряжно для юзера. Опач с его форками на каждое соединение опять не у дел - при постоянном висении тысяч юзеров он с его толпами процессов просто умрет.

Ответить | Правка | Наверх | Cообщить модератору

77. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от Аноним (-), 07-Июн-11, 17:36 
> А если у вас магазин? Товар допустим купили, а человек делает свой
> заказ и получает отказ перед самым носом потому, что этот товар
> только что купили.

Как ни странно, наиболее вменяемые магазины делают именно так: собирается корзина. Из товаров которые предположительно есть. На окончательном этапе сборки заказа чекается есть ли товар по факту на складе. Если да - заказ создан. Нет - отлуп.

Дело тут в том, что даже если вы слазили в базу и сгенерили мне страничку по актуальному состоянию товаров, пока я вдуплял чего бы мне заказать, этот товар вполне могли уже купить. Вот только страничка об этом ... не знает. Более того, пока я клал в корзину 10 наименований, из них 2 вполне могли раскупить. Апдейтить мне в реалтайме страницу или постоянно проверять не протухли ли даннык корзины - никакая БД не выдержит при мало-мальски популярном магазине. Поэтому это делается 1 раз - при окончательном создании заказа. Это нормально и всех устраивает.

> А если бы увидел актуальные данные, возможно выбрал
> бы другой товар. А так у него будет негативная ассоциация.

Она у него и так может возникнуть. Вот показывает юзеру страница что есть товар. Ну, на момент генерации и запроса в базу - был. Юзер минуту смотрел на нее и выбирал. Выбрал. А за эту минуту бац и кто-то взял и раскупил как раз то что он выбрал. Совершенно штатная ситуация для популярного магазина. Юзер обламывается. Ну и в чем выигрыш то? Возможность такой ситуации все-равно осталась.

>>  А при написании комента попутно можно
>> инвалидировать кеш, если уж по уму все делать.
> Про это я выше написал.

Про магазин? Так в вашем варианте юзер тоже может обломаться: вы же не можете юзеру постоянно генерячить новые версии страниц и вдувать ему новую версию страницы на любое изменение базы. Ну то-есть теоретически это можно, но практически такую жесть никакой сервер не выдержит + излишне сложно. Обычно юзеров именно посылают на окончательном оформлении заказа. Это нормально, привычно, реалистично. С идеей кеширования особо не воюет. И более того - это может сделать только зареганый юзер. Который если будет наглеть сильно дергая сервер, просто лишится своего аккаунта и более дергать эту операцию не сможет.

> Насчет школоты есть соответствующие ограничения. Ни один разумный админ не будет оставлять
> апач по умолчанию.

А ограничения знаете ли ведут к другой проблеме. Если я залимитирую число процессов/тредов опача, в случае когда вредитель занял собой все процессы/треды, легитимные юзеры вообще хрен дождутся своей очерели. Словят таймаут в браузере и отвалят восвояси. Не сильно лучше варианта лютой смерти сервака от форка кучи процессов.

> Динамика должна оставаться динамикой. Она для этого была создана.

Динамика должна быть таковой только там где это оправдано. Пример с товарами - не катит: список товаров устарел сразу же после выдачи, а постоянно актуализовывать полное состояние ваших складов на всех юзеров - никаких серверов не хватит. А если на юзере нет полного сосояния всех товаров на складе - оно тогда всяко не синхронно с вами и возможны накладки. Ы? :)

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

91. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от zoonman (ok), 07-Июн-11, 20:51 
Мне интересен такой момент, как то, откуда кэшсервер узнает, авторизован юзер или нет?
Например у меня по одному и тому же URL сайт обязан открываться совершенно по-разному для авторизованного и неавторизованного пользователя.
Ну а про блоки типа "вы уже смотрели" или выдачи материала в зависимости от запроса в поисковике наверно прийдется забыть.
Ответить | Правка | Наверх | Cообщить модератору

99. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от st (??), 08-Июн-11, 12:08 
> Мне интересен такой момент, как то, откуда кэшсервер узнает, авторизован юзер или
> нет?
> Например у меня по одному и тому же URL сайт обязан открываться
> совершенно по-разному для авторизованного и неавторизованного пользователя.

никак, кэш на уровне httpd не твой случай

> Ну а про блоки типа "вы уже смотрели"

реализуемы через ajax

> или выдачи материала в
> зависимости от запроса в поисковике наверно прийдется забыть.

ну так не кэшировать URL

Ответить | Правка | Наверх | Cообщить модератору

100. "Http-сервер nginx обслуживает более половины хостов рунета"  +/
Сообщение от zoonman (ok), 08-Июн-11, 12:17 
> реализуемы через ajax

Это увеличивает число запросов к серверу и усложняет архитектуру веб-приложения.


> ну так не кэшировать URL

что это значит?

Получается, что кэширование вредно? Или даже не так.
Получается, что кэширование применимо далеко не ко всем задачам.
Еще раз прихожу к выводу, что nginx-frontend & apache=backend неплохая связка.

И так получаем: использование nginx как кэширования динамики применимо только к высоконагруженным новостным/read-only/slowupdated сайтам и никак к магазинам и прочим web-apps.

Ответить | Правка | Наверх | Cообщить модератору

63. "Http-сервер nginx обслуживает более половины хостов рунета"  +2 +/
Сообщение от sn00p (?), 06-Июн-11, 16:56 
>[оверквотинг удален]
> минуту и каждый из них может написать новый комментарий в любой
> момент?
> В таком случае нужно event-based cache management применять. Т.е. сбрасывать/обновлять
> весь релевантный кэш (а его еще надо найти, а еще хранить
> индивидуально под каждого пользователя свой).
> Кэширование нужно применять там, где в нем есть смысл. Например скэшировать 100
> картинок со страницы и быстро отдать их. Но лучше отправить верстальщика
> на учебу, где он освоит спрайты и вместо 100 картинок будет
> 1. И о чудо, сервер перестанет загибаться от нагрузки потому, что
> вместо 1000 запросов к серверу будет 10.

redis+nginx+версионирование кэша по ключам.
Nginx рисует ssi по путям, который ему отдал редис, которые формируют в редисе динамические виджеты.
Если что-то надо изменить, то по маске удаляем из редиса все измененное и рисуем заново. Если продумать схему страницы по виджетам, и продумать дерево виджетов, то получается очень неплохо. Кэшировать можно практически все и везде.

Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру