У меня есть сайт Drupal, который при запуске может получить очень высокую посещаемость. Мы арендовали очень мощный сервер для первоначального запуска, после чего уменьшим масштаб. Сервер оснащен 8-ядерным процессором Xeon E5-2670 @ 2,6 ГГц и 30 ГБ оперативной памяти.
MySQL получил тонны памяти, и я подтвердил, что MySQL фактически использует эту память через «верхнюю часть»:
innodb_buffer_pool_size = 15G
PHP предоставили тонны памяти (почти наверняка слишком много сейчас, когда я заметил комментарий «на скрипт»):
memory_limit = 6000M
Конфигурация Apache является стандартной по умолчанию:
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
Я проводил тестирование JMeter (в основном «бросайте как можно больше потоков на сайт и запрашивайте страницы как можно быстрее»), и я вижу, что производительность падает по мере увеличения количества одновременных пользователей:
Однако нагрузка на машину по-прежнему очень низкая. Во время тестирования «верх» сообщает о 26 ГБ свободной памяти, а средняя нагрузка от «аптайма» не превышает 0,63. Я подозреваю, что у нас все еще есть много ресурсов, которые мы могли бы использовать для повышения производительности, но Apache не полностью использует эти ресурсы. Тем не менее, я разработчик, а не системный администратор, и я не эксперт в области производительности серверов.
Какое улучшение я могу сделать для повышения производительности?
Ответы Drupal может быть лучше подходит для этого вопроса, но вот несколько вещей для вас:
Теперь для Apache ... не используйте готовую конфигурацию Apache. Вам необходимо настроить Apache на свой сайт. Предполагая, что вы используете mod_prefork
(Я бы сказал, что это довольно вероятно, но только вы можете это определить) Вот основы того, как это делается, но вам действительно следует нанять кого-то, кто знает, что делает.
top
).MaxClients
& ServerLimit
переменные.Это, конечно, не окончательный ответ. Настройка сервера требует времени и опыта. Удачи.
Есть несколько модулей (Boost, Varnish и т. Д.), Которые могут помочь вам улучшить ситуацию, если у вас в основном анонимные пользователи. Однако они не так сильно вам помогут, если пользователи создают профили на вашем сайте и входят в систему.
Вот как я настраиваю серверы для Drupal:
Возможно, будет много мелких улучшений, которые могут продвинуться дальше, но я думаю, что это может быть по крайней мере отправной точкой для изучения.
Обналичьте все статические страницы, часто используемые страницы, меню и гиперссылки с помощью инструмента кэширования, такого как memcache. Проблема с Drupal заключается в том, что он делает много обращений к БД для каждой загрузки страницы и полностью перезагружает каждую страницу.