Archive for category программирование

Nginx против oProxy: друг другу сливаем :)

Потестировал производительность проксирования HTTP трафика. Результаты местами получились весьма неожиданными.

Повторю, тестировалось именно проксирование. Известно, что при прямой отдаче и Apache, и Nginx использует ядрёный вызов sendfile(), который отдаёт содержимое файлика в сокет без лишних копирований. Это неинтересно. А вот проксирование — это совсем другое дело. В ядре пока что ещё нет прямых путей для копирования из сокета в сокет (есть полупрямой вариант splice() + pipe(), но как выяснилось он даже не на всех современных ядрах работает).

Итак…

Read the rest of this entry »

, ,

6 Comments

Пора в production? Скоро узнаем.

Готовимся к продакшен тестированию. Надеюсь, завтра запустить всё воедино на тестовых машинах.

Из нового:

  • Балансировка нагрузки. Универсальный модуль для любых видов соединений. Написано кривовато, но работает. Заведует всеми узлами мастер-процесс. Это несколько замедляет процесс (рабочим приходится больше общаться с мастером), зато позволяет контролировать балансировку в одном месте.
  • Файлик: список сайтов. Пока каждый сайт можно только включить/выключить и прописать алиасы. Кроме того, на будущее есть поле “домашняя директория сайта”. В ближайшее время есть планы проксёй отдавать статичные файлы. Не понятно, что делать с .htaccess. Не хочется забивать, как это нынче делается в Nginx.
  • Файлик: список узлов. Представляет из себя IP, мастер-пароль, список ролей.
  • Роли. Что каждая машина умеет/должна делать. От этого зависит поведение балансировщика и некоторых скриптов. Предопределённые роли: worker_http (узел умеет обрабатывать HTTP-запросы), master (узел будет точкой входа, где висит балансировщик) и другие. Всё рассказывать раньше времени не буду :)
  • Мониторинг. Наконец нашёл, где заюзать функционалы. На основе этого функционала (functional) написан мониторинг файлов. Как результат, прокся умеет автоматически подгружать изменённый список сайтов или узлов.
  • Новый параметр у oproxyctl: show_nodes. Показывает известные узлы. Кто в дауне, сколько у каждого активных запросов, сколько всего обработано. Может оказаться полезным для выяснения проблемных узлов.
  • Поддерживаем новый протокол, который я сам выдумал :) Служит для различных сервисных запросов к узлу. Поскольку позволяет совершать совершенно небезопасные вещи, авторизация происходит без передачи открытого пароля по сети.
  • Новая утилита: clusterctl. Умеет 1) запустить на узлах с указанной ролью (или на всех, или на определённом IP) определённую команду и вернуть в STDOUT/STDERR что в итоге получилось 2) рассказывать список ролей текущей ноды 3) рассказывать список узлов, поддерживающих указанную роль. Служит для сервисных скриптов.
  • Прокся умеет выставлять X-Forwarded-For, чтобы в конечном итоге в логи попадал нужный IP.
  • Сервисные скрипты: apachectl (рестарт Апача на всех узлах), repquota и другие.
  • Оптимизация, стабильность.

Допил коньяк. Опять потянуло на философию…

, , ,

No Comments

oProxy (о прокси, about proxy)

Настроение: подшофе. Первый эксбиционисткий пост, как и положено в б-сферах. Прости меня, г-поди!

Read the rest of this entry »

No Comments

Спам в Wordpress

Рецепт для тех, кого спамеры утомили так же, как и меня. Помогает от бессмысленных комментариев к постам (”Вы очень интересно пишете!”, “Таков наш мир, ничего не поделаешь…”), обязательно сопровождающимися ссылкой на рекламируемый сайт.

Read the rest of this entry »

No Comments

Как из мухи сделать слона

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

Read the rest of this entry »

1 Comment