воскресенье, 13 мая 2012 г.

Балансировка HTTP запросов

Сегодня восполнил свой пробел в области балансировки HTTP траффика. Оказывается что кроме round robin DNS, Nginx и HAProxy еще существует такая замечательная вещь как LVS. Для себя решил что нужно будет обязательно попробовать LVS как только переедем на собственные сервера.
Настройка LVS на русском языке - очень полезная статья про установку LVS на хабре
Practical Load Balancing by Peter Membrey, Eelco Plugge, and Dawid House   - книжка про балансировку нагрузки написанная на очень простом языке. Довольно многословная книжка, даже для специалиста среднего уровня - пол книжки можно пропустить. Не понимаю зачем  требовалось объяснять основы TCP/IP и HTTP в книге, посвященной балансировки нагрузки. Мне всегда казалось что люди занимающиеся балансировкой нагрузки - четко представляют себе как работают данные протоколы.  Но если пропустить весь словесный понос - то можно дочитать до подробного описания установки LVS и кое-какую информацию по оптимизации Nginx.

Пока гуглил на тему влияния worker_cpu_affinity на производительность Nginx наткнулся на http://tengine.taobao.org/ - китайский форк Nginx в котором привязка воркеров к процессорам делается автоматически.

суббота, 12 мая 2012 г.

Github Issues 2.0

На этой неделе зашел потыкать палочкой issues  на github и был очень приятно удивлен. Если раньше они годились только для code review и как мелкие заметки самому себе - то сейчас они прямотаки преобразились. Теперь в принципе там есть все необходимое для базового управления задачами. Это конечно ни разу не Jira  но для управления задачами на уровне небольших групп программистов - самое то. Интеграция с репозиториями - гораздо лучше чем в Jira, одно только закрытие задач при коммите чего стоит. Многие возразят что для Jira тоже есть плагины связывающие задачи и коммиты в репозиторий - но эти плагины так написаны, что лучше бы уж и не брались.  На прошлом месте работы мы пытались использовать один из подобных плагинов - примерно с месяц промучались пока не выяснили что этот плагин делает запрос к репозиторию на каждый показ страницы с задачей - поэтому у нас то репозиторий становился "задумчивым", то сервер самой Jira. Исходя из этого github issues 2.0 - самое то для управления задачами внутри команды программистов. Полное описание возможностей github issues 2.0 можно посмотреть здесь

      

пятница, 4 мая 2012 г.

Magento-баг в аутентификации

Сегодня наткнулся на весьма досадную багу в системе аутентификации магенты. Если сессия протухает и клиент сразу же пытается залогинится - логин не работает. То есть клиента перенаправляют на страницу логина, он вводит корректные логина/парол - нажимает отправить -  и его опять перенаправляют на эту же страницу. Молча. Никакого сообщения об ошибке или успешности логина. После продолжительного шаманства выяснились некоторые детали: 
1. Проблема существует только в клиентской части - в админке таже самая последовательность действи не воспроизводит проблему. 
2. При каждой попытке session ID меняется. 
3. При удалении всех кук проблема также пропадает.
Из второго пункта можно сделать вывод что при каждой попытке заводится новая сессия, а старая соответсвенно теряется. После некоторой медитации над заголовками запросов я попробовал отключить флаг - "HTTP only" в настройках сессии - и угадал. После установки этого флага в "No", все заработало.

суббота, 21 апреля 2012 г.

На стачку!

В минувшие выходные на моей малой Родине, в городе Ульяновске прошла отличная конференция веб разработчиков: На стачку
Там было куча интересных докладов:
1. NoSQL под нагрузкой: практика. Подробно рассмотрены redis, mongodb, memcachedb.  Популярно объяснили почему не стоит использовать mongodb когда данные не помещаются в памяти. На мой взгляд это практически означает профнпригодность этой базы данных. Потому как в случае когда все данные помещаются в памяти - любая база может выдавать в общем-то приемлемые результаты, если конечно руки из правильного места растут. В общем этот доклад всем рекомендую к просмотру.
2. Нагруженный поиск на Sphinx. Роман Павлушко - очень подробно разобраны стратегии оптимизации sphinx. Также рекомендуется всем кто планирует использовать его в своих проектах.

Еще осталось штук пять докладов которые планирую отсмотреть в ближайшее время - о них напишу подробнее после просмотра. В заключении хочется сказать огромное спасибо авторам конференции за хорошее качество видео - оно на порядок привышает качество на многих столичных конференциях.

понедельник, 9 апреля 2012 г.

Hip-Hop от Facebook

Вчера попытался опробовать hiphop php в деле. Итог: полдня убито в попытках собрать компилятор, который,  в результате выдавал segmentation fault. Мораль сей басни такова - послушайте авторов сего творения - если хотите его использовать - установите cent os на виртуалку и играйтесь. Боюсь что на большее он пока не тянет. 

воскресенье, 8 апреля 2012 г.

VMware

Сегодня поимел секса с настройкой shared folders  для Ubuntu 11.10 server и VMware Fusion 3.1.3. VMware tools упорно отказывались работать, причем сама VMware упорно настаивала что VMware Tools установлены и работают, однако shared folder как небыло так и нет. Раза три я их сносил и устанавливал по всякому - а счастье все не наступало - из драйвер файловой системы отказывался устанавливаться на ядро 3.x. Хотя в документации поддержка Ubuntu server 11.10 была заявлена.
В конце концов я забил на родные tools и попытался установить open-vm-tools.  Как ни странно - установка прошла на удивление легко:
sudo apt-get install --no-install-recommends open-vm-tools
После этого я добавил вот такую строчку в /etc/fstab:
.host:/  /mnt/hgfs  vmhgfs  defaults,noauto,uid=1000,gid=1000   0   0

Добавил в udev правило для загрузки драйвера файловой системы shared folders:
ACTION=="add", KERNEL=="vmhgfs", RUN+="/bin/mount /mnt/hgfs"
Это  правило можно поместить в любой файл в директории /etc/udev/rules.d/
После этого нам остается только подмонтировать эту файловую систему:
mkdir /mnt/hgfs
sudo mount /mnt/hgfs
И - о чудо, эта дрянь заработала :-)


Learning Go

Я давно интересовался возможностью применения GO в реальных системахи даже измерял  производительность GO На мой взгляд это как минимум это очень многообещающий язык. Недавно вышла его первая стабильная версия - надо будет взглянуть насколько он изменился за это время. Как минимум они обещали новый шаблонизатор написать, поскольку тем что был в то время в практических целях было пользоватся невозможно. Для этого в самый раз будет: Learning Go