• Звонок по России бесплатный 8 800 200-59-60
  • Москва +7 (495) 232-92-30
  • Санкт-Петербург +7 (812) 327-59-60
  • Екатеринбург +7 (343) 378-41-50

Пресс-центр

Тестирование: Apache,PHP, MySQL on FreeBSD/Linux/Solaris

Disclaimer

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

Предисловие

В рамках одного из проектов по созданию Web-сервера для очень посещаемого форума возник вопрос: «Какую ОС целесообразно устанавливать на нагруженные Web-сервера?». Если вопрос возник, то надо обязательно найти на него ответ! Сказано сделано.

Объекты испытаний

Сервер

В качестве объекта для испытаний выступил сервер с весьма неплохой конфигурацией для предполагаемой области исследования:

  • CPU: 4 AMD Opteron 875 Series processors. (Dual Core, 2.2GHz)
  • Memory: 16GB ECC, registered DDR400 SDRAM
  • Storage: 2 hot-swap 73GB U320 SCSI (RAID1)
  • DVD-ROM and floppy module
  • SCSI Embedded U320 controller with integrated RAID
  • Network I/O: Dual embedded Gigabit Ethernet.

Мы имеем 8 очень быстрых ядер, больше чем достаточно памяти и дисковая система начального уровня. Как выяснилось в процессе тестирования, узким местом она не являлась и с успехом выдержала небольшой поток записи в журнал работы Apache. Гигабитный интерфейс также был практически не нагружен.

Load Generator

Load Generator тоже совсем не слабая машина, работающая под Windows 2003 server, которой хватило с очень большим запасом для созданий максимальной нагрузки на тестируемый сервер:

  • CPU: 2 AMD Opteron 275 Series processors. (Dual Core, 2.2GHz)
  • Memory: 8GB ECC,registered DDR400 SDRA
  • Storage: 2 hot-swap 73GB U320 SCSI (RAID1)
  • Network I/O: Dual embedded Gigabit Ethernet.

В процессе тестирования постоянно снимались показатели производительности с параметров загрузки процессоров, очередь к сетевому адаптеру и к дисковой подсистеме.

Программное обеспечение

В тестировании приняли участие:

  • FreeBSD 6.0 STABLE AMD64
  • SLES 9 SP3 AMD64
  • Solaris 10 01/06 AMD64

Выбор программного обеспечения для тестирования был обусловлен тем, что больше половины Web-серверов работает под Apache+PHP+MySQL. Были использованы:

  • Apache 1.3.34
  • MySQL 4.1.18
  • PHP 4.4.2
  • Форум phpBB 2.0.19 150000 сообщений.

Для обеспечение идентичных условий программное обеспечение собиралось вручную идентичными скриптами, запускалось с одинаковыми конфигурационными файлами. Исключением является MySQL для FreeBSD. На всех платформах использовался gcc 3.4.4.

Методика тестирования

В качестве ПО для создании нагрузки выступил продукт с открытым кодом Apache JMeter 2.1.1.

Исследуемые операционные системы подвергались нагрузке в 8,32,128,256,512 и 1024 потоков. Каждый поток выполнял просмотр:

  • списка форумов (20% запросов);
  • произвольной страницы списка сообщений в случайном форуме (20% запросов);
  • одной ветки обсуждений (60% запросов)

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

Для каждого запуска снимались показатели количества обслуженных запросов, среднее время отклика и процент ошибок с учетом «разогрева» и «остановки» теста.

Каждая ОС тестировалась в режимах «Untuned», т.е. сразу после установки и в режиме ?Tuned? с модифицированными параметрами, для каждой ОС приведены производимые настройки.

Тестирование

FreeBSD 6.0

После установки ОС было пересобрано ядро с отключением заведомо ненужного оборудования, включением поддержки SMP и поднятием параметра maxusers до 2048.

При испытании в режиме Untuned (только пересобрано ядро) результаты оказались просто ужасными. Большое время отклика и неполная нагрузка на процессоры. Странное поведение планировщика по «сваливанию» большинства процессов Apache на 7-ой «процессор». Перекомпиляция ядра с ULE планировщиком никакого результата не дала. Перекомпиляция MySQL c lpthread и другими параметрами компиляции позволила поднять производительность в 5-6 раз, но тем не менее: неполная нагрузка на CPU вызвала вопрос «почему так медленно?», на который к сожалению ответа найти не удалось. Вариантов два:

  • это нормально для FreeBSD и она действительно плохо масштабируется на большое количество процессоров
  • что-то не было учтено при компиляции ПО и ядра.

Испытание при 1024 потоках не проводилось, т.к. задержки на запросы заведомо были бы недопустимыми для промышленной системы. Далее выводы по этой ОС не делаются и приводятся просто для справки (Ну не зря же мы с ней возились дольше всего)

SLES 9 SP3

Была выбрана минимальная инсталляция, потом доставлено только необходимое ПО.

Ни с установкой, ни с компиляцией ПО под этой операционной системой не возникло. Все прошло быстро и гладко.

Забегая вперед, стоит отметить низкую разницу между результатами в режимах ?Tuned? и ?Untuned?, что говорит о хорошей ёё настройке «из коробки».

Solaris 10 01/06

Установка и настройка этой операционной системы также не вызвала никаких проблем. Единственное что стоит отметить ? необходимость сборки компилятора gcc вручную, но на такой мощной машине этот процесс занял меньше 5 минут и прошел без особых проблем. 

Результаты

Количество обслуженных запросов

Что стоит отметить:

  • малое влияние тонких настроек на Linux и его лидерство при низких и средних нагрузках
  • отставание Solaris при низких нагрузках и его подавляющее лидерство при тяжелых

 

Время отклика

Это очень важный показатель, т.к. позволяет оценить время, которое пользователь будет ожидать ответа на своё действие. Значение до 3000мсек можно считать вполне допустимым.

Интересные выводы:

  • При 512 потоках резко увеличивается время отклика, а при нагрузке 1024 потока ответа от Linux приходится ждать почти 40 секунд. При высоких нагрузках заметен вклад тонких настроек.
  • Solaris достаточно уверенно себя чувствует на всем промежутке, и даже при 1024 потоках отвечает «всего» за 4 секунды.

Процент ошибок

Конечно, важно как быстро ваши клиенты получают свои ответы, но также важно сколько клиентов получают ошибки у себя в браузере, а тут по операционным системам следующая ситуация:

  • Уже при 512 потоках Linux начинает отдавать ошибки, при 1024 потоках 4% пользователей через 40 секунд ожидания получат сообщение об ошибке
  • Solaris единственная ОС которая сохранила безошибочную работу при 512 потоках при адекватной производительности и даже при 1024 потоках может похвастаться около 1% ошибок.

Выводы

Не буду делать никаких выводов по поводу FreeBSD.

Выбор между Linux и Solaris достаточно сложен, с одной стороны Solaris немного медленнее при низких и средних нагрузках, с другой при большом наплыве пользователей его поведение предпочтительнее.

За кадром осталось использование Load Balancers и средств кэширования, возможно использование этих средств внесет изменение в расстановку сил.

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

Благодарности

  1. Предоставление оборудования: Андрей Шац ? инженер, ЗАО "Тринити Солюшнс" http://www.trinity.su
  2. Помощь в настройке FreeBSD: Joseph Koshy. FreeBSD Volunteer, http://people.freebsd.org/~jkoshy

Использованные ресурсы

  1. http://www.spec.org
  2. http://sunsolve.sun.com
  3. http://www.freebsd.org
  4. http://www.opennet.ru

Автору все-равно будете ли вы использовать эти тесты в своих корыстных целях, данное тестирование выполнено только для удовлетворения своих интересов.

Автор статьи - sanek1978

Система Orphus