CMS HTTP

Быстрая социальная сеть или новый взгляд на этот вопрос

Прошло уже достаточно много времени с момента моих публикаций по оптимизации системы для быстродействия социальной сети на базе BuddyPress.

В преддверии выхода нового релиза – хочу поделиться приобретенным опытом 🙂

Как всегда мы рассмотрим сервер базы данных, веб-сервер и php, а также сам WordPress и BuddyPress.

Начнем с того, что крайне желательно отказаться от Apache – если готовы использовать Nginx! Главное преимущество перехода на Nginx – это легкие (по использованию ресурсов сервера) процессы! Но сразу хочется предостеречь от всевозможных трудностей при использовании Nginx – все примеры, советы и собственно решения ориентируются на Apache.., но что не сделаешь для увеличения производительности 😉

И так! Мы отказались от Apache? Тогда нам прямой путь в сторону Fast Cgi (Php-fpm или Spawn-fcgi – второй вариант мне кажется куда удобнее..).

Связка в нашем случаи будет выглядеть так Nginx принимает запросы, статику отдает самостоятельно, а в Fast Cgi отдает на выполнение php скрипты, затем Fast Cgi создает запросы к MySQL.

По сути мы уже произвели оптимизацию, – снизили потребление ресурсов (и памяти и процессора). Но это только первая часть..

Как еще можно улучшить ситуацию? Настроив MySQL!

MySQL

Недавно завершил проект по оптимизации сервера с 1000 пользователей, 600 блогами (из которых активных штук 30) + поисковые боты и гости – от 15 до 40 хинтов в сутки и в пики до 400 обращений в секунду…

Мои рекомендации следующие: использовать MyISAM! InnoDB может когда нибудь, но не сейчас! Далее: выделите 60% оперативной памяти для MySQL и из них процентов 20 на query_cache – тем самым вы уменьшите количество обращений непосредственно к базе данных. Не забудьте ограничить размер запросов, которые будут кешироваться (не более 1M).

Php-frm или Spawn-fcgi

Опыта по работе с Php-frm у меня слишком мало.. а вот по Spawn-fcgi есть. Создавайте не менее 2 процессов по 2048 потоков – каждая страница BuddyPress – это порядка 100 запросов или потоков в адрес процесса Spawn-fcgi.. то есть прежде чем создаться новому процессу Spawn-fcgi он успеет обработать 20 “клиентов” и не успеет “скушать” много ресурсов. Вообще настройка количество процессов и потоков – дело практики.. подбирайте!

Кстати, архитектурное решение: если у вас на одном сервере несколько сайтов – создайте для каждого свои процессы php-cgi.. надеюсь не надо объяснять про плюсы данного решения? 😉

Если Вы используете FreeBSD – работайте по сокетам!

Очень интересный момент – кеширование! Применяйте eAccelerator! Тем самым мы создаем две линии кеширования – Php и MySQL – нагрузка на всю цепочку существенно падает 🙂

WordPress MU и BuddyPress

Поставьте WP-Tuner и смотрите сколько же лишних запросов нагружает Вашу систему. Плагин дня рождения – +2000 запросов на фронте BuddyPress при 1000 пользователей..  прежде чем писать плагины – надо уметь их готовить!

Не ставьте плагинов кеширования!!!!! У Вас и так уже две линии созданы! Лучше займитесь темами.. максимально избавьте темы от использования запросов!

Выкладывать “боевые” конфиги.. пока не вижу смысла… все слишком индивидуально! Но я подумаю над такой возможностью 😉

Сервер с двумя процессорами по два ядра с 4Gb оперативной памяти – потянет очень серьезный проект! Обещаю 😉

Google

To top