Скорости работы ЛС vs Конфигурация сервера
Здравствуйте уважаемые знатоки. перечитал весь сайт по тегам «скорость и livestreet»
Но ситуация вынудила меня поднять эту тему снова.
На пустом сервере с включенным мемкешем и всяческими оптимизациями движка найденными на просторах этого сайта загрузка 1-й страницы занимает 0.5-0.6сек и выглядит следующим образом:
Раз:
Два:
Теперь если в онлайне будут постоянно 30-40чел то скорость работы проседает до 0.9-1сек
Раз:
Два:
Теперь собственно вопрос. Что и где надо увеличить для того чтобы
1. Скорость загрузки первой страницы уменьшилась до приемлемых для клиента 0.2сек
2. Скорость не проседала более чем до 0.5сек при онлайне в 40-50чел.
Ну и вопрос номер 2.
Поделитесь пожалуйста у кого какая конфигурация сервера\сколько людей держит в онлайне и какой отклик при загрузке в первой страницы, чтоб можно было аргументировать увеличение количества процессоров\ОЗУ\ДИСКА и т.д.
Заранее благодарен
Но ситуация вынудила меня поднять эту тему снова.
На пустом сервере с включенным мемкешем и всяческими оптимизациями движка найденными на просторах этого сайта загрузка 1-й страницы занимает 0.5-0.6сек и выглядит следующим образом:
Раз:
Два:
Теперь если в онлайне будут постоянно 30-40чел то скорость работы проседает до 0.9-1сек
Раз:
Два:
Теперь собственно вопрос. Что и где надо увеличить для того чтобы
1. Скорость загрузки первой страницы уменьшилась до приемлемых для клиента 0.2сек
2. Скорость не проседала более чем до 0.5сек при онлайне в 40-50чел.
Ну и вопрос номер 2.
Поделитесь пожалуйста у кого какая конфигурация сервера\сколько людей держит в онлайне и какой отклик при загрузке в первой страницы, чтоб можно было аргументировать увеличение количества процессоров\ОЗУ\ДИСКА и т.д.
Заранее благодарен
52 комментария
1. используйтe nginx
2. используйте кэширование данных в памяти (memcached, а лучше XCache), и не используете file caching
3. используйте как можно более свежую, стабильную версию PHP
4. используйте php-fpm
5. используйте php opt-cacher (в PHP 5.5 оно уже встроено, для более старых версий есть APC или тот же XCache)
6. Тюнинг файловой системы (noatime, tmpfs для всяких «временных» файлов/папок и прочие трюки)
7. Тюнинг MySQL (Тут огромное поле для оптимизаций, начиная с того что можно пробовать собственно не с MySQL, а продвинутыми «форками» (Percona или MariaDB). Грамотной настройкой многие операции с базой можно ускорить в разы )
Подчеркну, что всё вышеперечисленное справедливо для любого PHP приложения, LS не является чем-то уникальным.
Ну и особо отмечу — вообще не связывайтесь с «шаред» хостингом, и по возможности не связывайтесь с VPS. Первое вообще не предсказуемо и не оптимизируемо. Второе — относительно.
Скорость LS зависит главным образом от количества комментариев у топика. Т.е. страница топика с большим количеством комментариев (несколько сотен) — это единственная проблема. Чем больше комментариев тем дольше будет генерироваться страница и сделать с этим ничего нельзя.
Все остальные типы страницы можно вогнать в стабильное время. Т.е. главная или всякие разные списки генерируются, в принципе, с одинаковой примерно константной скоростью.
1. nginx — используется (с senfile-ами, gzip_static-ами и т.д.) а последний месяц картинки все идут на амазон
2. memcache — используется. по поводу xcache — писали что он не очень стабилен. Как вы смотрите на это утверждение
3. PHP Version 5.3.3-7+squeeze13
вот это еще не пробовал. Вы предлагаете обойтись без апача вообще? или через апач fastcgi использовать?
APC используется
Насколько это будет ефективным на Xen-овской VPS-ке?
тюнинг файловой системы всегда имеет смысл. В конце концов веб сайт — это огромное количество работы с файлами и если вы научите свой сервер быстрее и эффективнее работать с файлами вы выиграете во всех аспектах. И VPS или нет — вопрос второй. Поле для деятельности там большое, начиная с выбора файловой системы там же есть не только ext4, но, например, XFS или Reiser4 — интересные штуки. Ну а использовать оперативную память для временных фалйов (tmpfs) это очевидно отличная идея, если память есть. А временные файлы активно создаются и nginx-ом и MySQL-ом и даже, самим LS. Однако, игры с файловой системой требуют определенной, админской квалификации.
php5-fpm не сильно увеличил производительность
где-то на 20-30%
Но СИЛЬНО помог(0.1-0.2сек) nginx fastcgi_cache настроенный по ману: habrahabr.ru/post/71501/
но пока на боевой сервер не ставил… еще експериментирую
Кеширование nginx-а штука классная, но там море тонкостей, осторожно с этим — много тестить под разными пользователями. И внимание — там tmpfs для fastcgi_temp_path настроить — святое дело.
Далее на nginx по этой куке в map смотреть, подставлять ли в качестве ключа (fastcgi_cache_key) строку с sessionid или без.
Не знаю, на сколько верным будет данное решение. Нок как вариант.
1. Кешируется для каждого пользователя отдельно в т.ч залогиненого
2. Нормально работает вход\выход пользователя и можно ставить кеш не 10сек как в статье на хабре, а сколько угодно (требует доп.тестов)
Теперь думаю над принудительной очисткой кеша т.к. если он будет жит 2-3 или даже 24часа то надо будет принудительно чистить. Пока что конфиг такой:
а кстати @Gmugra. Может ответите на 2-ю половину моего вопроса?
можно в личку если что
На сервере только один сайт на LS (1.0.3, 16 плагинов, шаблон основанный на Synio )
Генерация главной 0.15-0.25. Генерация топика с 200 комментариями — 0.45. Сервер загружен, в среднем, на 2% по CPU и на 20% по памяти.
Софт: nginx, Percona, apachе+php-fpm, PHP 5.4, memcached, APC
кешинг nginx не используем.
Нагрузки озвучить не могу, но скажем так — средненько.
На самом деле, у нас не в полной мере идеально, многое можно было бы ещё оптимизировать, но, честно говоря, оно и так летает. Большой нужды что-то сильно менять пока нет.
Выбирая сервер для совсем домашней LS я по вашему доброму совету поменял апача на nginx и не нарадуюсь. Спасибо за совет. Без всяких там настроек и адаптаций я теперь в упор не вижу что бы он проседал даже в пиковые часы до 12 % чпу и 18 памяти :) фантастика1
одбираю сейчас новые винты чтобы быстрые но тихие.
До завтра. пошел спать
Каждый смотрит на проблему под углом своей профессиональной рефлексии. А вот взгляда с точки зрения программирования интерфейса я пока не нашёл. Все шкурки построены «на базе..» там есть простор для тюнинга
★ писал и публиковал wordpress api для android
На серверах в обоих случаях стоит Debian 7, Apache + fastcgi + php+fpm + nginx, БД Percona, PHP 5.4, xCache