LINUX.ORG.RU
ФорумAdmin

Linux or FreeBSD в качестве ВЕБ-сервера (CGI/Perl). Провел тестирование - может скажете что и как?


0

0

Почитал тут про всякие ваши "пузомерки" и попугаи" и вот решил опубликовать свои собственные впечатления.

Ситуация такая.

Мой ВЕБ-сервер на данный момент работает под Linux (ASPLinux 9, ядро 2.6.2, Apache 1.3.29). Конфигурация: Duron 1600/KT333/640Mb DDR2700/WD 40 GB 7200 ATA133 Когда возросла нагрузка - сервер стал "загибаться". Причем один раз загнулся так, что пришлось ребутить кнопкой, т.к. не реагировал ни на что. Поковырял немного, помучал, почитал форумы, везде говорят что круче FreeBSD. Решил поэкспериментировать. Взял комп (Athon 1700/KT333/256Mb/40 Gb Seagate 5400 ATA100, поставил на него все тот же ASP, пересобрал ядро, перенес на него сайт. Написал простенький бенчмарк на Perl, эмулирующий хреново_число запросов, и запускаемый с другого компа. Также показывает, на сколько запросов был получен ответ (HTML-код, сгенерированный CGI/Perl скриптом).

Запускаю бенчмарк.

хреново_число=20. Держится. хреново_число=40. Держится. С трудом. На запросы отвечает предварительно подумав. хреново_число=50. Держится. Винт усиленно перемалывает информацию, консоль тормозит, ответы на запросы идут еле-еле. хреново_число=55. Перестал отвечать на запросы. Торморжу бенчмарк. Через пару минут смог работать в консоли. хреново_число=80. Жужжит, скрипит, консоль не работает. Торможу бенчмарк, жду 10 минут - все еще скрипит. Ребутнул кнпокой.

Решил испробовать дистрибутивы в стандартной поставке. В тесте приняли участие:

ASP Linux 9 Fedora Core 2 Mandrake Linux 9 Red Hat 9 нигде ничего не менял.

Результаты не сильно отличались.

Теперь. Ставлю FreeBSD, за день разбираюсь что там и как. (Система меня конечно поразила своим порядком и строгостью). Еще удивило как мало ей для счатья надо памяти.

Собираю Апач (С сырцов), ставлю MySQL (с порта), пересобираю perl (со старым не заводился новенький DBI и ImageMagick. Включаю бенчмарк.

На 45 запросах фря жила и отвечала на запросы. Консоль не тормозила. На 70 стала скрежетать, подтормаживала консоль. При остановке бенчмарка через 30 сек все пришло в норму.

Повторный запуск. На консоли top. Хреново_число=50. top показывает в среднем 70-80% загрузки процессора и много свободной памяти. Хреново_число=100. Тормозит консоль, правда не жутко, работать в принципе можно. На top - 95-99%. Через некоторое время таки перестает отвечать. Но через 30-40 сек после остановки бенчмарка все нормализуется.

При хреново_число>100 ситуевина аналогичная. В-общем убить Фрю мне не удалось. Так почему же умирал Линукс? И еще один маленький тестик вида:

#!/bin/sh # test.sh

/root/test.sh

# EOF

Фря от него даже не икала. Линукс все-таки икал, приходилось приводить в себя с помощью killall -9 test.sh

Ну что, уважаемый All, послушаю ваши комментарии что и как надо покрутить в Линуксе чтобы он не валился. Если ничего не услышу или оно не будет работать - таки уговорю начальство перейти на Фрю... Эх, чувствую надо было сразу Фрю ставить...

anonymous

Понаблюдав еще чуть-чуть, все-таки склоняюсь к мнению, что Фря лучше справляется с большими нагрузками.

anonymous
()
Ответ на: комментарий от anonymous

Буду пока продолжать делиться впечатлениями, основанными на наблюдениях:

1. FreeBSD более эффективно использует память. Она отлично дышит на 256 Мб при несравненно большей нагрузке (Хоть и эмулированной скриптом, но всеравно РЕАЛЬНОЙ нагрузке, в РЕАЛЬНЫХ условиях, при запросах к РЕАЛЬНОМУ ВЕБ-серверу, а не на бенчмарках). Линукс загибался на 40-50 одновременных запросах к странице, фря живет на 80-100.

2. Более эффективно распределяет процессорное время между процессами (Наблюдение основанное на TOPах в Линуксе и во Фре): В Линуксе наблюдал 90% одному процессу отдается а остальные висят, во Фре - между всеми равномерненько так...

anonymous
()
Ответ на: комментарий от anonymous

а можно привести исходник бенчмарка
и поподробнее рассказать, что из себя представляли
странички, которые должен был отдавать web-сервер?
хотя, конечно, все это грустно... :(

neshura
()
Ответ на: комментарий от neshura

Исходник приведу вечером, он у меня дома.

А страничка - самая обычная CGIшка Перловая, запущенная без MODPerl и проч. наворотов. судя по ./ab http://localhost/ время ее выдачи в среднем 0,2-0,3 сек, на обоих системах.

anonymous
()
Ответ на: комментарий от anonymous

прям по моему сценарию идешь, только у меня это годика 3-4 назад случилось Ж) на веб-сервер - фрю, однозначно

W ★★★★★
()
Ответ на: комментарий от anonymous

Еще вопрос. На Фре Перл был собран без тредов. Может лучше с тредами - как посоветуете?

anonymous
()

Как собирался апач на фре и линуксах, какие модули загружены/скомпилированы ? Есть большое количество тестов, к которым доверия больше чем к твоим наколенным. Бенчмарк кстати в апаче есть свой, ab называется.

chucha ★★★☆
()
Ответ на: комментарий от chucha

>> Бенчмарк кстати в апаче есть свой, ab называется

Знаю. Только он показывает время отдачи страницы, кол-во запросов и пр. А мне надо узнать КАК сервер справляется с загрузкой.

Кстати, все знакомые админы как один твердят что фря в роли сервера лучше...

>> Как собирался апач на фре и линуксах, какие модули загружены/скомпилированы ?

Апач конфигурировался и там и там так:

#!/bin/sh

./configure \

"--disable-module=imap" \

"--disable-module=status" \

"--activate-module=src/modules/php4/libphp4.a" \

"--enable-module=so" \

"--enable-module=env" \

"--enable-module=dir" \

"--enable-module=log_config" \

"--enable-module=unique_id" \

"--enable-module=mime" \

"--enable-module=negotiation" \

"--enable-module=alias" \

"--enable-module=rewrite" \

"--enable-module=access" \

"--enable-module=auth" \

"--enable-module=expires" \

"--enable-module=cgi"

И там и там CFLAGS=-O9 -ffast-math -mcpu=i686 -march=i686 -fomit-frame-pointer -fno-exceptions

>> Есть большое количество тестов, к которым доверия больше чем к твоим наколенным

То - тесты, а это - эмулирование реальной нагрузки. Скрипт, который запрашивает N-ое кол-во ВЕБ-страниц одновременно.

anonymous
()

Мой опыт показывает, что производительность в Linux сильно зависит от настроек. Перебирать дистрибутивы особой необходимости нет. Лучше грамотно перегенерировать ядро и настроить дисковую подсистему. Я много раз сталкивался с тем, что ядра ОС, идущие в стандартной поставке RH и Debian сильно тормозили, можно сказать на пустом месте. Как только ставил ядро, собранное самостоятельно из исходников, взятых с kernel.org, то все начинало просто летать. Помимо этого, обязательно в стартовые скрипты вставляю вызов hdparm (ключи c1d1u1 и X, соответствующий IDE-железу). Это в несколько раз ускоряет работу с винтом. Года три-четыре тому назад сравнивал производительность Free-шки с Linux. Настроенный вышеописанным образом линукс работал быстрее cтандарно установленной Free-BSD и лучше нее держал нагрузку. Убежден, что выбор между Free-шкой и Linux-ом обуславливается не столько их ТТХ, сколько привычками и опытом работы. С точки зрения производительности, надежности и безопасности эти системы одинаковы.

anonymous
()
Ответ на: комментарий от anonymous

>>Как только ставил ядро, собранное самостоятельно из исходников, взятых с kernel.org, то все начинало просто летать.

См. мою первую мессагу. Ядро 2.6.2, собрано именно под мою конфигурацию, ничего лишнего. И правда раза в полтора-два быстрее стандартного.

>>Помимо этого, обязательно в стартовые скрипты вставляю вызов hdparm (ключи c1d1u1 и X, соответствующий IDE-железу).

Был включен всегда. Еще и подбирал параметр -a. Добился скорости передачи (hdparm -t /dev/hda) ~37,5 Mb/sec

Тем не менее нагрузку держит хреновее Фри. Может есть какие-то тонкие настройки? В инете ничего толкового не нашел, может хоть тут что посоветуют по тонкой настройке... Мне ведь и самому не очень хочется все переводить, но думаю если овтетов не дождусь до субботы - поеду переставлять...

anonymous
()

Ручки выпрямляем 8)))

Server Version: Apache/1.3.28 (Debian GNU/Linux)

Server uptime: 10 minutes 21 seconds
Total accesses: 12470 - Total Traffic: 50.5 MB
20.1 requests/sec - 83.2 kB/second - 4243 B/request

И прекрасно себя чувствуем...

Zulu ★★☆☆
()
Ответ на: Ручки выпрямляем 8))) от Zulu

2Zulu:

У тебя там что? Статика? Или хомяк на PHP? :))) Маленькие скрипты?

Так вот у меня скрипты по нескольку тысяч строк. Скрипты, выводящие фотки из MySQL базы данных, на лету прикручивающие к ним логотип... (Правда уже прикрутил кеширование, раньше вообще смерть была...) И на этом загибается...

anonymous
()
Ответ на: Ручки выпрямляем 8))) от Zulu

Насчет "прямых ручек" вежливая просьба заткнуться. Это у вас стандартная отмазка, если посоветовать толкового ничего не можете. Пробовал все. MODPerl не прикручивается по причине глючности многих скриптов (Сайт достался мне в наследство от другого программера, вот мучаюсь), SpeedyCGI жрет столько памяти что даже и смотреть страшно....... Остается только Plain CGI...

anonymous
()
Ответ на: комментарий от anonymous

мой тебе совет - спроси на opennet. тут тебя врядли подскажут

W ★★★★★
()
Ответ на: комментарий от anonymous

С cgi затыкаться будет быстро затыкаться любой сервер. Могу только посоветовать отключить keepalive, перенести отдачу картинок на быстрый сервер - mathopd или thttpd, поиграться с кэшированием - смотреть в сторону mod_accel.

chucha ★★★☆
()
Ответ на: комментарий от anonymous

Точно, хомяк 8))))) На PHP, Perl, python и немного java и c++.
20 запросов в секунду _вечером_. В рабочее время около 50 (на этом тазике). База данных -- тоже не mysql... И вообще на отдельном толстом крокодиле, так что к вопросу отношения не имеет.

Статики там нет вообще (картинки отдает thttpd с другой машины), а длину скриптов не скажу... Программистов надо поспрашивать.

Zulu ★★☆☆
()
Ответ на: комментарий от anonymous

С 2.6.2 может быть проблема? Попробуй старое доброе 2.4. У меня с 2.6.1, правда, тоже проблемы со стабильностью под нагрузкой были. Убери там smp, (хоть в документации и написано, что эта фича не тормозит, но у меня на это счет есть свои сомнения). Выруби в BIOS apm, shadow, ACPI и прочую лабуду, которая серверу не нужна. Проверь настройки RAM и таймингов шины. Посмотри, сколько выдает hdparm -T. Должно быть не меннее 200-300 мб/сек.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.