Идеальная многосерверная среда LAMP - PullRequest
7 голосов
/ 20 сентября 2008

Существует много информации о настройке стеков LAMP в одном блоке или, возможно, о перемещении MySQL в свой собственный блок, но выход за пределы этого, похоже, не очень хорошо задокументирован.

В моей текущей веб-среде возникают проблемы с емкостью, поэтому я ищу рекомендации относительно настройки конфигурации , определения узких мест , безопасность и т. д.

В настоящее время я размещаю около 400 сайтов с достаточной потребностью в избыточности и безопасности, поэтому я вышел за рамки единого решения, но не на уровне полного провайдера или специализированной веб-хостинговой компании.

Может кто-нибудь подсказать мне хороший опыт по созданию отличной веб-фермы Apache с целью обеспечения безопасности и расширения в будущем?

Моя веб-среда состоит из 2 избыточных серверов MySQL, 2 избыточных серверов веб-содержимого, 2 интерфейсных серверов Apache с балансировкой нагрузки, которые монтируют контент через nfs и совместно используют каталоги конфигурации и сессий apache между ними, и одного «разработчика». сервер, который также монтирует веб-контент через nfs и содержит все учетные записи разработчиков.

Я очень доволен многими этими настройками, но, похоже, преждевременно задыхается от нагрузки.

Спасибо !!

- ОБНОВЛЕНИЕ -

Оказывается, что "удушение загрузки" связано с mod_log_sql, который я использую для отправки своих журналов apache в базу данных mysql. Переконфигурируя веб-серверы для записи своих операторов sql в файл на диске, а затем создавая отдельный процесс для отправки их в базу данных, это позволяет веб-серверам намного быстрее освобождать свои потоки и обрабатывать гораздо большую нагрузку.

Ответы [ 3 ]

3 голосов
/ 20 сентября 2008

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

Чтобы выявить узкие места, вам необходимо использовать инструменты отчетности вашей системы. Некоторые примеры:

  • MySQL имеет медленный журнал запросов.
  • Linux предоставляет статистику, такую ​​как средняя загрузка, iostat, vmstat, netstat и т. Д.
  • Apache имеет журнал доступа и страницу состояния сервера.
  • Языки программирования имеют профилировщики, например Pear Benchmark .

Используйте эти инструменты, чтобы выявить самых медленных / самых больших преступников и сосредоточиться на них. Попробуйте улучшить и оценить, действительно ли это улучшает производительность.

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

Исходя из описания вашей системы, я сначала предположил, что диск io и network io на серверах NFS, я бы посмотрел на время запроса MySQL. Я также проверил бы производительность общих сеансов.

2 голосов
/ 20 сентября 2008

Учебное пособие должно было бы выявить узкие места с помощью реальных эмпирических данных.

Это база данных , apache, сеть, процессор, память, io? Вам нужно больше оперативной памяти, sharding ( + ), это DiskIO, нагрузка сети NFS, процессор для полного сканирования таблицы?

Когда вы узнаете, в чем проблема, вы можете столкнуться с проблемой, которой недостаточно для масштабирования инфраструктуры, из-за того, как работает код, и у вас возникает необходимость либо просто создать больше экземпляров вашей текущей настроить или сделать код другим.

0 голосов
/ 02 июня 2010

Я бы также рекомендовал в качестве первого шага с точки зрения масштабируемости разгрузить ваш контент в CDN, такой как Edgecast. Используйте ваши текущие два контент-сервера в качестве дополнительных веб-серверов.

...