Блог понаехавшего | шо?

CAT | Web2

Nov/09

5

Ускоряем свой HTTP-сервер

Для начала расскажу, как обычно работают сервера:

  1. Создаётся сокет, который слушает порт
  2. Вызывается системный вызов accept, который берёт первого клиента из очереди соединений, а если его нет – то блокирует приложение до тех пор, пока он не появится
  3. Приложение что-то делает с этим клиентом и в конце концов с ним прощается
  4. goto пункт два

nginx и lighttpd использует вместо accept функции select/kevent/epoll, которые позволяют работать со многими клиентами одновременно, но это уже отдельная история (к асинхронным веб-серверам accept-фильтры применимяются точно так же)

Accept-фильтры – это модули ядра FreeBSD, которые не говорят, что сокет готов до тех пор, пока не выполнится какое-то условие. Я нашёл только два фильтра:

  • dataready – accept блокирует сокет до тех пор, пока в него прийдут данные. Когда мы получаем сокет, мы уже точно можем из него что-то считать
  • httpready – сокет блокируется до тех пор, пока не прийдёт полный GET/HEAD запрос. Соответственно, нам не надо тратить время на переключение контекста, если запрос ещё не собрался.

Остановимся на фильтре httpready

Буферизирует он только GET и HEAD запросы, так как в POST/PUT может прийти 600мегабайтный порнофильм.
Итак, подключаем модуль accf_http:

    kldload accf_http
    echo 'accf_http_load=”YES”' >> /boot/loader.conf

Далее нужно изменить работу с сокетом — установить опцию httpready:

        struct accept_filter_arg afa;
        bzero(&afa, sizeof(afa));
        strcpy(afa.af_name, "httpready");
        setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));

Результаты тестов

Так как существует мнение, что accept-фильтры бесполезны, мы решили провести тестирование. Веб-сервер был выбран AnyEvent::HTTPD, клиент – ab. Итак, результаты:

  1. локальная машина, 10000 запросов, concurrency = 4: httpready даёт прирост в 10%
  2. локальная сеть, 10000 запросов, concurrency=1000: httpready даёт прирост в 10%
  3. локальная сеть, 10000 запросов, concurrency = 4: прирост в 25%
  4. локальная сеть, 1000 запросов, concurrency = 1: в два раза!

В боевых условиях, при наличии GPRS, 256k и прочего позора цивилизации, скорость ещё увеличится.

Настройка веб-серверов

В apache 1.3+ и nginx accept-фильтры поддерживаются.

Apache под FreeBSD изначально содержит такую конфигурацию:

 AcceptFilter http httpready
 AcceptFilter https dataready

и менять её не стоит.
А вот в настройках сервера nginx стоит добавить опцию

    accept_filter "httpready";

Ссылки

No tags Hide

Jun/09

13

Вышел wordpress 2.8

Из новшеств замечено только одно – админка перестала работать под IE6. В остальном всё так же. Настоятельно советую обновиться лишь тем, кому совсем нехер делать

PD: обновился)

No tags Hide

Mar/09

13

Новый релиз калькулятора

Из изменений:

  • Собственный парсер результата. Сейчас правильно показывается степень, подсвечиваются неизвестные.
  • Правильно понимаются валюты. У них отображается название, научился понимать знак $
  • При наборе подсказка не только парсит и расставляет функции, а ещё и показывает помощь по аргументам
  • Поправил мелкие баги, связанные с показом несуществующих ошибок

Hide

Nov/08

4

Wordpress 2.7 beta1

это первый пост, который я пишу из WP-2.7beta1.

Изменился весь дизайн админки. Она стала лучше с точки зрения юзабилити (всё перед глазами, а добавить пост можно вообще в один клик), но дизайн стал каким-то серым и угрюмым. Есть много замечательных людей, которые и без дизайна мне настроение портят. Не хватало ещё, чтобы WordPress этим занимался.

Админка вордпресса

Так же ворпресс научился самообновлять ядро. Система такая же, как и с плагинами.

Пока это всё что я заметил.

Для тех, кто не знает, что такое Wordpress, объяснение здесь

Hide

Nov/08

2

Наборы иконок

Как правило для сайтов нужен какой-то однообразный набор иконок для базовых событий – добавление, удаление чего-то итд итп

Так вот. Я знаю уже два набора иконок, которые пригодятся при веб-разработке

  1. Silk icons (http://famfamfam.com)
  2. Fugue icons (http://www.pinvoke.com/)

, , , Hide

Oct/08

29

Flock

Для тех, кому я ещё не проел мозги рассказами про этот замечательный браузер.
Это – социальный браузер на основе Firefox. Умеет из которобки работать с:

  • соцсетями (список друзей, оповещения итд итп)
  • блогами (WordPress, Blogger, Twitter, LJ)
  • фотовидеогаллереями (Picasa, Flickr, Youtube)
  • вебпочтой (Gmail, AOL, Yahoo)
  • закладочными сервисами (Delicious)

Все сервисы флока – это простые JS-файлы. И можно без проблем дописать поддержку понравившегося.

Расширения к нему подходят те же, что и к Firefox 3.

Полгода назад я пользовался только Flock-ом. С выходом Firefox 3 перешёл на неё. И мечтал о Flock-е на движке 3-го Firefox. Мечта идиота свершилась – навую версию можно скачать с

Сайт Flock-а

Blogged with the Flock Browser

, , Hide

Посмотрим, что из этого получится.

Только этот API должны начать поддерживать. Хотя довольно прикольно – ты сидишь, пыришься в ленту, а тебе в реалтайме подкружаются новые посты и комменты к ним.

Тонкий намёк на http://friends.rambler.ru

, Hide

Find it!

Theme Design by devolux.org