Оптимизация алгоритма btree позволила увеличить производительность http-акселератора Varnish

15 июня 2010 года

Poul-Henning Kamp, принимающий участие в разработке FreeBSD, опубликовал статью в которой рассмотрел проблемы в работе классического алгоритма btree. При разработке высокопроизводительного http-акселератора Varnish было замечено, что при работе с древовидными структурами не учитывается состояние виртуальной памяти, что при высокой нагрузке на VM приводит к провалам в производительности (возникновение паразитных задержек из-за VM page fault). Предложенная в проекте Varnish реализация бинарных деревьев B-heap продемонстрировала увеличение пиковой производительности до 10 раз.

Http-акселератор Varnish используется в таких проектах, как Facebook, Wikia и Slashdot. Работа Varnish базируется на задействовании современных методов мультиплексирования соединений, таких как epoll и kqueue, а также системных вызовов sendfile и madvise. Для формирования конфигурации используется специальный язык VCL, который затем компилируется в исполняемый бинарный код. В конфигурации допускается также использование вставок на языке Си. Присутствуют механизмы балансировки нагрузки, учета состояния и времени реакции бэкенд-серверов. Интересной возможностью Varnish также является способность собирать итоговые страницы по частям на стороне фронтэнда, определяя логику сборки на языке ESI (Edge Side Includes). Для упрощение управления кластером из множества Varnish-серверов подготовлен специальный web-интерфейс, позволяющий не только выполнять функции мониторинга, но и вносить изменения в конфигурацию.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Оптимизация алгоритма btree позволила увеличить производительность http-акселератора Varnish», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.