Archive for category программирование
Nginx против oProxy: друг другу сливаем :)
Posted by John Lepikhin in Ocaml, Performance, oProxy, программирование on February 1st, 2009
Потестировал производительность проксирования HTTP трафика. Результаты местами получились весьма неожиданными.
Повторю, тестировалось именно проксирование. Известно, что при прямой отдаче и Apache, и Nginx использует ядрёный вызов sendfile(), который отдаёт содержимое файлика в сокет без лишних копирований. Это неинтересно. А вот проксирование — это совсем другое дело. В ядре пока что ещё нет прямых путей для копирования из сокета в сокет (есть полупрямой вариант splice() + pipe(), но как выяснилось он даже не на всех современных ядрах работает).
Итак…
Пора в production? Скоро узнаем.
Posted by John Lepikhin in Ocaml, oProxy, программирование on January 29th, 2009
Готовимся к продакшен тестированию. Надеюсь, завтра запустить всё воедино на тестовых машинах.
Из нового:
- Балансировка нагрузки. Универсальный модуль для любых видов соединений. Написано кривовато, но работает. Заведует всеми узлами мастер-процесс. Это несколько замедляет процесс (рабочим приходится больше общаться с мастером), зато позволяет контролировать балансировку в одном месте.
- Файлик: список сайтов. Пока каждый сайт можно только включить/выключить и прописать алиасы. Кроме того, на будущее есть поле “домашняя директория сайта”. В ближайшее время есть планы проксёй отдавать статичные файлы. Не понятно, что делать с .htaccess. Не хочется забивать, как это нынче делается в Nginx.
- Файлик: список узлов. Представляет из себя IP, мастер-пароль, список ролей.
- Роли. Что каждая машина умеет/должна делать. От этого зависит поведение балансировщика и некоторых скриптов. Предопределённые роли: worker_http (узел умеет обрабатывать HTTP-запросы), master (узел будет точкой входа, где висит балансировщик) и другие. Всё рассказывать раньше времени не буду :)
- Мониторинг. Наконец нашёл, где заюзать функционалы. На основе этого функционала (functional) написан мониторинг файлов. Как результат, прокся умеет автоматически подгружать изменённый список сайтов или узлов.
- Новый параметр у oproxyctl: show_nodes. Показывает известные узлы. Кто в дауне, сколько у каждого активных запросов, сколько всего обработано. Может оказаться полезным для выяснения проблемных узлов.
- Поддерживаем новый протокол, который я сам выдумал :) Служит для различных сервисных запросов к узлу. Поскольку позволяет совершать совершенно небезопасные вещи, авторизация происходит без передачи открытого пароля по сети.
- Новая утилита: clusterctl. Умеет 1) запустить на узлах с указанной ролью (или на всех, или на определённом IP) определённую команду и вернуть в STDOUT/STDERR что в итоге получилось 2) рассказывать список ролей текущей ноды 3) рассказывать список узлов, поддерживающих указанную роль. Служит для сервисных скриптов.
- Прокся умеет выставлять X-Forwarded-For, чтобы в конечном итоге в логи попадал нужный IP.
- Сервисные скрипты: apachectl (рестарт Апача на всех узлах), repquota и другие.
- Оптимизация, стабильность.
Допил коньяк. Опять потянуло на философию…
oProxy (о прокси, about proxy)
Posted by John Lepikhin in Ocaml, Performance, программирование on November 14th, 2008
Настроение: подшофе. Первый эксбиционисткий пост, как и положено в б-сферах. Прости меня, г-поди!
Спам в Wordpress
Posted by John Lepikhin in Blogroll, программирование on August 29th, 2008
Рецепт для тех, кого спамеры утомили так же, как и меня. Помогает от бессмысленных комментариев к постам (”Вы очень интересно пишете!”, “Таков наш мир, ничего не поделаешь…”), обязательно сопровождающимися ссылкой на рекламируемый сайт.
Как из мухи сделать слона
Posted by John Lepikhin in программирование on June 25th, 2008
Вот за что я не люблю Java-программистов — так это за манию гигантизма. Проявляется он не только в банальной ресурсоёмкости их виртуальной машины и размере их кода, но и том, что эти методы они навязывают и другим.