DDoS'им домашние сервера.

Это скорее не статья, а просто познавательная заметка. <br/><br/>Сидел я что-то ночью и было гнусно мне и решил я стрельнуть из AB-шки (ApacheBench) по серверам своим. Поднял Апач, завёл Мускуль (правда, базы так и не схватились, чтобы проверить скорость сборки PHP на блоге WP). <br/><br/>Интерес был из-за того, что конфиг серверов был очень схож. Уточню: <br/> <br/> СутьСервер #1Сервер #2 ОСьWin7x64ProWin2008x64 ПлатформаS1156S1156 CPUC...
15 июня 2011, среда 05:08
ARGUMENT_600 для раздела Блоги
Это скорее не статья, а просто познавательная заметка.

Сидел я что-то ночью и было гнусно мне и решил я стрельнуть из AB-шки (ApacheBench) по серверам своим. Поднял Апач, завёл Мускуль (правда, базы так и не схватились, чтобы проверить скорость сборки PHP на блоге WP).

Интерес был из-за того, что конфиг серверов был очень схож. Уточню:

Суть Сервер #1 Сервер #2
ОСь Win7x64Pro Win2008x64
Платформа S1156 S1156
CPU Core i7 860 (2.8GHz x 4c*) Core i5 760 (2.8GHz x 4c)
CPU fan Tt Frio Noctua NH-C12P SE14
RAM 8Gb 1333MGz (4 x 2Gb) 1.5V 8Gb 1333MGz (2 x 4Gb) 1.5V
MB Asus P7P55-M Asus P7P55D-E
HDD 2 x 1Tb WD Black FAEX(raid0)(7.2k) 2 x 150Gb WD Veloceraptor(raid0)(10k)

*-HT выключен


А вот режимы работы были несколько разными, хоть и не фатально:


Суть Сервер #1 Сервер #2
CPU 3,33GHz (159x21)@1.1V 3,58GHz (210x17)@1.25V
RAM 636MHz (DDR3-1272) 842MHz (DDR3-1685)
RAM t 9-9-9-23 CR2 9-9-9-24 CR1


Софт на обеих ЭВМ:
• Apache 2.2.8
• PHP 5.2.6
• MySQL 5.0.51b
• phpMyAdmin-2.10.3


Скорость разделов под стэк с базами, апачем итд:

Скорость серверного раздела (сервер 1)

Скорость серверного раздела (сервер 2)
(данные довольно ориентировочные, т.к. Crystal Mark не умеет опрашивать разделы более чем в 1 поток)

Для мишени нужно было выбрать html (т.к. настраивать php было лень, да и html ближе к повседневным запросам, нежели непрокэшированный php) с жирным, некрасивым кодом. Берем одну страничку из сайта фотографа (оригинал http://sambeavers.ru/camerachart2.html)

Итак, заряжаем AB в cmd и хреначим в локалхост:


(кликните по картинке для увеличения)



Вот это да! Если кто не просек куда смотреть, скомпилирую данные в таблицу:

Суть Сервер #1(i7 860) Сервер #2(i5 760)
Количество запросов* 787 50000
Время выполнения этих запросов 38 сек 7 сек
Ошибок 0 0
Скорость обработки запросов 20 з/сек 6829 з/сек
Время на обработку запроса 490 ms 1 ms
Скорость передачи данных 0,8 МБайт/сек 261 МБайт/сек

* - уменьшил количество, ждать лень было


Честно говоря, не понимаю откуда такая маленькая скорость обработки запросов на первом сервере. Не исключаю, что это программный баг или в системе висит что-то мешающее Апачу спокойно работать (фаерволлы, антивирусы и подобная софтина была, разумеется, выключена).

Очевидно, что это не баг железа. Скорее всего и не баг самой ОС (приоритеты менял, свап убивал). Возможно баг самого стэка AMP. Честно говоря, мы с котом уже устали под ночь и отказались выяснять причины. В ближайшем будущем разрулим.

В итоге мы с Сокетом были удивлены и недовольны:

Сокет удивлен действиями Апача

Выводы:
1) Два идентичных практически сервера (по части железа) но с разной ОСью показали чудовищно разную производительность.
2) Повлияла ли на производительность ОСь - да.
3) Только ли ОСь повлияла на провальные результаты первого сервера? - нет, определенно что-то еще. Как только узнаю что - напишу дополнение.
4) Насколько производительность сервера на базе Win 2008 быстрее Win 7 в нашем случае? - Сервер на базе Win 2008 оказался в 341 раз быстрее.

Интересные моменты:
Сервер на базе Core i5 и Win 2008 показал способность обработать более 6500 запросов в секунду в сценарии html. Тоесть, если мы не усложняем сайт php, flash, дикими css-хаками то единовременно сервер может выдерживать около 13 000 посетителей (в том случае если каждый из них раз в две секунды переходит на другую страницу).
Если же мы обложим сервер сборкой страницы c помощью php (ну, например так работают блоги типа WP http://sambeavers.ru/blog/ - с того же сайта) то сервер сможет обрабатывать уже ~345 запросов в секунду (разумеется, это усредненное значение, многое зависит от качества кода), а это около 700 пользователей единовременно, просматривающих блог.

На счет "несерверного" железа:
В Конференции конфиг назвали "помойным" и по серверным меркам - так оно и есть. Но здесь есть несколько "но". Из нехитрых рассчетов выше можно понять, что даже такого железа хватает за глаза для мелкого сайта или блога. Да чего уж там, 700 посетителей единовременно и для небольшого интернет-магазина будет более чем достаточно. Если поставить сервер на CentOS или Debian можно и в 1000-1300 человек нагрузки держать. Если еще при этом раскидать картинки на сервере по серверам Yandex и Googlе (чтобы браузер собрал их с разных сайтов, получая эффект аналогичный RAID 0 у хардов) то получится обслужить все 1700 человек.
Такой конфиг сейчас реально собрать за 17 000, с корпусом и БП. Будет ли такой сервер отказоустойчив 24\7? - нет. Да и черт с ним, за такую то цену. Главное - бэкапить данные. Более того, года 3 такой сервер прослужит точно - а больше и не надо.
Если собирать сервер начального уровня с одним процом, это встанет около 35 000 минимум. Что мы получим за такие деньги? Большую производительность? - Нет, Xeon или Opteron в бюджетном сервере за 35к явно сольют разогнанному Core i5. Получим стабильность. Да, мило, а она нужна, если и домашний конфиг способен отработать 3 года? (а через 3-4 года и сервер придется менять, ибо его потом не продать).
Сделал личный для себя вывод - не решать несуществующих проблем. Вот ломануться на сервак 100 000 пользователей разом и базы данных лягут - тогда поговорим о Ксеонах.

Спасибо за внимание и удачного разгона!

Обсуждение:https://forums.overclockers.ru/viewtopic.php?f=25&t=404405