G-WAN: сервер приложений на чистом C
G-WAN — бесплатный (но не open source) скоростной web сервер и сервер приложений. Особенность в том, что сервлеты пишутся на ANSI C, сервер их компилирует и выполняет.
Чтобы запустить, на 64 битном Debian/Ubuntu необходимы пакеты совместимости с 32х битными исполняемыми файлами:
Для работы G-WAN также понадобятся заголовочные файлы библиотеки C:
Скачиваем архив, распаковываем, запускаем:
В G-WAN 2.9.4 были проблемы с совместимостью с файловой системой XFS (выпадал с сообщением no listener), так что на одной машине пришлось смонтировать диск 10 Мб в памяти и скопировать G-WAN туда:
В директории gwan мы видим структуру директорий вида:
Первая директория — IP на котором работает сервис (можно сменить, например, 0.0.0.0), вложенные директории — ip адрес хоста (начинается с #) или виртуальные хосты, начинающиеся с $), например:
В директории csp храняться примеры приложений на C, например, вот такая форма контактов:
xx.xx.xx.xx:8080/csp?contact
Или генерация графиков:
xx.xx.xx.xx:8080/csp?charts
Особое место G-WAN может занять для отдачи статического контента, т.к. делает это даже быстрее Cherokee. Навскидку, производительность оценивалась на виртуальной машине Xen с Debian 6 x86, 128 мб. памяти и одним ядром от Intel Core i7 CPU 930 2.80Ггц. Для тестов использовал Apache Benchmark (ab) из пакета apache2-utils.
G-WAN 2.9.4 с Keep-Alive и включенными логами:
G-WAN 2.9.4 с Keep-Alive и выключенными логами:
Как видно, разница при включенных логах и выключенных небольшая, притом, что access-лог раздулся на полгигабайта за минуту.
lighttpd 1.4.28 (Keep-Alive включен по-умолчанию, логи выключены, число рабочих процессов увеличено до 4 server.max-worker=4):
Cherokee 1.0.8 (Keep-Alive включен по-умолчанию, логи выключены):
Так что G-WAN впереди. Сама концепция мне очень близка. Зачем тратить ресурсы на PHP, потом его кешировать, городить компиляторы и прочее, если можно написать сразу на C?
Еще бенчмарк:
nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/
Введение:
gwan.ch/archives/gwan_linux.pdf
Чтобы запустить, на 64 битном Debian/Ubuntu необходимы пакеты совместимости с 32х битными исполняемыми файлами:
sudo apt-get -y install ia32-libs libc6-dev-i386
sudo apt-get -y install libc6-dev
Для работы G-WAN также понадобятся заголовочные файлы библиотеки C:
sudo apt-get install libc6-dev
Скачиваем архив, распаковываем, запускаем:
wget http://gwan.com/archives/gwan_linux.tar.bz2
tar -xjf gwan_linux.tar.bz2
cd gwan
sudo ./gwan
В G-WAN 2.9.4 были проблемы с совместимостью с файловой системой XFS (выпадал с сообщением no listener), так что на одной машине пришлось смонтировать диск 10 Мб в памяти и скопировать G-WAN туда:
mount -t tmpfs -o size=10M tmpfs /mnt
В директории gwan мы видим структуру директорий вида:
127.0.0.1_8080 > #127.0.0.1 > csp
handlers
_logs
www
Первая директория — IP на котором работает сервис (можно сменить, например, 0.0.0.0), вложенные директории — ip адрес хоста (начинается с #) или виртуальные хосты, начинающиеся с $), например:
/ gwan / 192.168.0.1_80 / #192.168.0.1 (корневой хост)
/ $mtaalamu.ru (виртуальный хост)
В директории csp храняться примеры приложений на C, например, вот такая форма контактов:
xx.xx.xx.xx:8080/csp?contact
Или генерация графиков:
xx.xx.xx.xx:8080/csp?charts
Особое место G-WAN может занять для отдачи статического контента, т.к. делает это даже быстрее Cherokee. Навскидку, производительность оценивалась на виртуальной машине Xen с Debian 6 x86, 128 мб. памяти и одним ядром от Intel Core i7 CPU 930 2.80Ггц. Для тестов использовал Apache Benchmark (ab) из пакета apache2-utils.
G-WAN 2.9.4 с Keep-Alive и включенными логами:
ab -k -c 200 -t 60 -n 10000000 http://127.0.0.1:8080/index.html
Requests per second: 19219.23 [#/sec] (mean)
G-WAN 2.9.4 с Keep-Alive и выключенными логами:
ab -k -c 200 -t 60 -n 10000000 http://127.0.0.1:8080/index.html
Requests per second: 19408.07 [#/sec] (mean)
Как видно, разница при включенных логах и выключенных небольшая, притом, что access-лог раздулся на полгигабайта за минуту.
lighttpd 1.4.28 (Keep-Alive включен по-умолчанию, логи выключены, число рабочих процессов увеличено до 4 server.max-worker=4):
ab -k -c 200 -t 60 -n 10000000 http://127.0.0.1/index.html
Requests per second: 11127.82 [#/sec] (mean)
Cherokee 1.0.8 (Keep-Alive включен по-умолчанию, логи выключены):
ab -k -c 200 -t 60 -n 10000000 http://127.0.0.1/index.html
Requests per second: 15625.93 [#/sec] (mean)
Так что G-WAN впереди. Сама концепция мне очень близка. Зачем тратить ресурсы на PHP, потом его кешировать, городить компиляторы и прочее, если можно написать сразу на C?
Еще бенчмарк:
nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/
Введение:
gwan.ch/archives/gwan_linux.pdf
- —
- 05 сентября 2011, 22:13
Комментарии (10)
RSS свернуть / развернутьyababay
В итоге вернемся к тому от чего старались уйти — к C.
Sergei_T
Sergei_T
yababay
Sergei_T
durman
Sergei_T
Веб-сервер, просто поддерживающий cgi, php и даже сервлеты еще нельзя назвать сервером приложений.
yababay
Sergei_T
Словечко-то нынче модное
durman
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.