Цитата:
Сообщение от Alexey
(Сообщение 536702)
Я имел в виду, что у каждого сайта есть странички, которые кэшировать нельзя, либо невозможно в виду того, что они разные у разных людей
|
все можно кешировать, даже там где идет подсчет, можно сначала складывать данные в MEMORY MySQL таблицы, а потом синхронизировать, можно просто складывать в ОЗУ, а через N-ное время сбрасывать в базу и т.п.
Цитата:
Сообщение от Alexey
(Сообщение 536702)
Поэтому nginx не сможет абсолютно все кэшировать. Впрочем, такая ситуация нормальна и типична для каждого сайта.
|
может кешировать, к примеру содержимое $_COOKIE (т.е. ту же сессию пользователя) можно дописать в паттерне обращения к memcached'у, следовательно nginx будет забирать для каждого пользователя страничку индивидуально из кеша :D
Цитата:
Сообщение от Alexey
(Сообщение 536702)
Ненормально и не типично то, что перед тем как отдаться пользователю, вся страница будет загружаться в оперативную память.
|
вообще ненормально порождать "долгоиграющие" скрипты, так как 1 процесс Апач с тем же mod_php выжирает приличное количество ОЗУ, что в случае большого количества "форков" полностью забьет все ОЗУ и пойдет в своппинг
Цитата:
Сообщение от Alexey
(Сообщение 536702)
Получится, что если к вашему сайту откроют тысячу одновременных коннектов, сделают запрос, но не будут читать данные - все тысяча страниц будут находиться в это время в оперативной памяти. А это уже чревато тяжкими последствиями.
|
прааальна, но:
1) количество коннектов можно четко регулировать еще на уровне файрвола
2) количество обращений от фронтэнда к бэкэнду, можно строго залимитировать допустим на уровне 150 конкурентных запросов, т.е. при большем количестве выдавать тот же 504, 502... но при этом не "ложить" сервер в глубокий своп...
Цитата:
Сообщение от Alexey
(Сообщение 536702)
P.S: при таком подходе так же потеряются куки, REMOTE_ADDR и куча других полезных вещей, так что даже если там с производительностью будет и хорошо, то работать это все равно будет криво.
|
все можно реализовать...
кончено, надо кешировать по возможности все на уровне скрипта, и постараться ускорить генерацию скрипта до минимального значения по времени, также надо постараться сократить обращения к io ... т.е. все кеши хранить в ОЗУ, аналогично надо постараться сократить MySQL запросы до минимума, при этом не порождать сложные объединенные запросы ... лучше сделать 10-20 простых запросов к базе и потом закешировать результат в ОЗУ, чем 10-20 запросов объединить в один сложный запрос...
а вообще все эти рассуждения пространственные, т.е. без реальной практики нет смысла рассуждать о нагрузке, т.е. это все достаточно индивидуально для каждого конкретного сайта :D