LINUX.ORG.RU

SSI в nginx такой медленный?

 ,


0

2

Два ноутбука, связаны между собой 50мбитным Wi-Fi, на одном сервер, на другом клиент, клиент производит замер используя ab:

# ab -n 10000 -c 100 -k -H "Accept-Encoding: gzip, deflate" http://spfng.com/ 2>&1 | egrep "^(Failed|Requests)"

Железо значение не имеет, у всех оно разное.

За эталон возьмём статичный blank.html весом пусть пару байт.

Сервер обрабатывает порядка 9000 запросов в секунду, процессор едва ли нагружен, порядка 20% на ядро. Значит, любая другая статика, читай, закэшированные php-скрипты (такая же .html статика) должны отрабатывать с тем же результатом.

Возьмём пустой .php скрипт, этот файл должен прогоняться через интерпретатор php и выдавать результат веб-серверу, а веб-сервер клиенту, — ab сообщает об обработке 2000 запросов в секунду, что для «динамики», имхо, неплохой результат. Все процессы php-fpm и nginx нагружают процессор сервера на 100%.

Теперь включаем кэширование сайта с динамичными блоками, которые включаются на странице при помощи SSI, <!--# include virtual="/user_info.php" -->, — кэшируется страница, кэшируется этот SSI-блок для каждого юзера в отдельности, потом страница собираются и отдаётся пользователю. Включаем ssi on; в конфиге nginx, и сервер обрабатывает около 2500 запросов в секунду, что мягко говоря, для закэшированной страницы ОЧЕНЬ мало, потому что от статики я ждал тех самых 9000 запросов/сек. Эти же самые 2000 тире 2500 запросов в секунду мне выдаёт обычный php без кэширования.

Правда, благодаря кэшированию, процессор теперь отдыхает, php не дёргается.

Теперь отключаем ssi off;, попробуем запросить закэшированную страницу /user_info.php, и получаем те самые завестные 9000 запросов в секунду, Карл!

Я аутирую.

Включаю SSI — получаю 2000 rps на статике, ВЫключаю SSI — получаю максимальные 9000 rps на статике.

По итогам, SSI и HighLoad — вещи несовместимые, никак. Получается, если нужна максимальная отдача сервера, SSI должен быть отключён, а страницы должны быть закэшированы полностью, и никаких блочных вставок, никакой «сборки страницы» на стороне сервера. Страница должна кэшироваться со всеми «динамическими вставками» целиком, иначе получается херня.

Забудьте про SSI.

Вот такая загогулина.

★★★★★

А че это такое хоть расскажи?

arturpub ★★ ()
Ответ на: комментарий от arturpub

server side include - возможность делать инклуд на стороне веб сервера

kiotoze ★★★★ ()
Ответ на: комментарий от xtraeft

SSI 2016

Я тебе больше скажу, весь рамблер и половина яшки на ssi работают.

anonymous ()
Ответ на: комментарий от anonymous

Ну рамблер это динозавр, а яшка - это яндекс? Где можно почитать про их опыт использования ssi?

xtraeft ★★☆☆ ()

лично для меня, еще минус SSI был в том, что он удалял хедер Content-Length, а для меня это было критично. Поэтому пришлось патчить nginx-ssi...

kiotoze ★★★★ ()

просто статику можно отдавать и sendfile'ом.

exception13 ★★★★★ ()

Напиши уже книгу «хайлоад-локалхост: философия и паттерны разработки».

Deleted ()
Ответ на: комментарий от xtraeft

Я хоть в том треде и отметился, но вот на 200 kRPS не обратил внимание.

i-rinat ★★★★★ ()
Ответ на: комментарий от Deleted

Напиши уже книгу «хайлоад-локалхост: философия и паттерны разработки».

Я бы почитал. У спуфинга, в отличие от 95% местных экс-анонимусов, есть мозги и любопытство.

router ★★★★★ ()
Ответ на: комментарий от router

Осталось приобрести умение применять любопытство там, где оно нужно.

Deleted ()

SSI и HighLoad — вещи несовместимые, никак

Tell me moar.

iSage ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.