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

10.12.2013

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

alt

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

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

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 тоже совсем не слабая машина, работающая под 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 достаточно сложен, с одной стороны Solaris немного медленнее при низких и средних нагрузках, с другой при большом наплыве пользователей его поведение предпочтительнее. За кадром осталось использование Load Balancers и средств кэширования, возможно использование этих средств внесет изменение в расстановку сил. Основной вывод, который можно сделать: необходимо тщательно тестировать именно Вашу систему при именно Ваших нагрузках во время выборы платформы.

Мы готовы ответить на ваши вопросы
Оставьте свои данные, и мы свяжемся с вами в ближайшее время.