С ростом популярности web-приложения его поддержка неизбежно начинает требовать всё больших и больших ресурсов. Первое время с нагрузкой можно (и, несомненно, нужно) бороться путём оптимизации алгоритмов и/или архитектуры самого приложения. Однако, что делать, если всё, что можно было оптимизировать, уже оптимизировано, а приложение всё равно не справляется с нагрузкой?

125.59
Рейтинг
Высоконагруженные системы *
Методы получения высокой производительности систем
Сначала показывать
Порог рейтинга
Уровень сложности
libscgi — эффективное решение для простых и быстрых скриптов
4 мин
5KОчень часто необходимо реализовать простое легкое решение, которое должно отработать довольно быстро. А с использованием технологии AJAX это стало еще актуальнее. Это может быть как скрипт автокомплита, скрипт специфического поиска, вывод информации из справочника. Ранее использовались cgi скрипты. При больших нагрузках они оказались не очень эффективными и были разработаны протоколы fcgi и scgi. Следует заметить что производительность scgi сервера довольно-таки высокоя (более 1500 запр/сек) и памяти занимает всего 600K.
Протокол Simple Common Gateway Interface (SCGI) — это протокол по взаимодействию приложений с веб (http) серверами. Большинство современных WEB-серверов (Apache/nginx/lighttpd) имеют встроенную поддержку scgi. Ниже дано краткое описание использование простой библиотечки, которая представляет собой scgi сервер.
Исходники тут.
Протокол Simple Common Gateway Interface (SCGI) — это протокол по взаимодействию приложений с веб (http) серверами. Большинство современных WEB-серверов (Apache/nginx/lighttpd) имеют встроенную поддержку scgi. Ниже дано краткое описание использование простой библиотечки, которая представляет собой scgi сервер.
Исходники тут.
+23
Про техники оптимизации
24 мин
11KПоучительная история о техниках оптимизации наглядно.
Объявим в рамках топика небольшой конкурс по архитектурно-ориентированной оптимизации программного обеспечения.
Вкратце, код состоит из пачки функций, производящих невнятные на первый взгляд манипуляции с исходными данными, и примочки-драйвера, который n раз запускает неоптимизированную версию, затем оптимизированную, сравнивает насчитанные циферки, и, в случае их совпадения, выдает отношение времени выполнения. Вот так:
Executing original code… done
Executing optimized code… done
Checking results… PASSED
Number of runs: 3
Original code average time: 11.954537 sec.
Optimized code average time: 1.052994 sec.
Speedup: 11.35
Разрешено использовать любые техники оптимизации, компилятор GCC с любыми опциями, и, скажем, сервер с двумя четырехъядерными процессорами Intel Xeon E5420 2.5 GHz.
Вот, кстати, код:
Техзадание
Объявим в рамках топика небольшой конкурс по архитектурно-ориентированной оптимизации программного обеспечения.
Вкратце, код состоит из пачки функций, производящих невнятные на первый взгляд манипуляции с исходными данными, и примочки-драйвера, который n раз запускает неоптимизированную версию, затем оптимизированную, сравнивает насчитанные циферки, и, в случае их совпадения, выдает отношение времени выполнения. Вот так:
Executing original code… done
Executing optimized code… done
Checking results… PASSED
Number of runs: 3
Original code average time: 11.954537 sec.
Optimized code average time: 1.052994 sec.
Speedup: 11.35
Разрешено использовать любые техники оптимизации, компилятор GCC с любыми опциями, и, скажем, сервер с двумя четырехъядерными процессорами Intel Xeon E5420 2.5 GHz.
Вот, кстати, код:
+78
Dell собирается купить компанию Compellent Technologies
2 мин
441Причем стоимость этой сделки может достигать почти миллиарда долларов — в настоящее время речь идет о сумме в 900 миллионов долларов США. Это немного заниженная цена, что сейчас является скорее исключением, чем правилам. В настоящее время среди ИТ-корпораций нормой является завышение цены для понравившегося стартапа или компании.
0
Oracle уменьшит количество ядер в процессорах SPARC T4
2 мин
1.4K
SPARC T3 после своего появления в сентябре 2010 года стал первым серверным процессором с 16-ю ядрами. Большое количество потоков лучше подходит для обработки веб-запросов и других легко распараллеливаемых задач, а не для ERP-систем, на которых специализируется Oracle. Поэтому и принято решение, что в SPARC T4 (ожидается в 2011 году) количество ядер сократят, чтобы улучшить производительность каждого отдельного треда.
+18
Видео с пользовательской конференции по Sphinx (~8часов)
1 мин
1.1KПоскольку новость не пробежала на Хабре, но однозначно (с) будет интересна многим:
«Видео с пользовательской конференции по Sphinx (~8часов)
http://devconf.tv/user/sphinx».
«Видео с пользовательской конференции по Sphinx (~8часов)
http://devconf.tv/user/sphinx».
+20
Проверяем отказоустойчивость сайта
4 мин
36K
Итак, поехали.
+52
Повышение производительности за счет блочного кеширования
5 мин
5.7KТема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.


+42
В Intel работают над созданием 1000-ядерного процессора
2 мин
7.1K
Руководство корпорации Intel заявило, что сейчас в лабораториях этой компании ведется разработка процессора, который содержит около 1000 дискретных вычислительных ядер. Как известно, сейчас большая часть моделей процессоров включают намного меньшее количество ядер, от двух до шести. На Хабре проскакивало сообщение о том, что был представлен экспериментальный 48-ядерный процессор для серьезных научных разработок. И вот как раз на основе этого чипа и создается новый, 1000-ядерный процессор.
+41
Highload на дешевом хостинге: хэш-таблица в MySQL
3 мин
21KВысоконагруженный проект (web-сайт) — не обязательно популярная социальная сеть, видеохостинг или MMORPG. Простейший способ резко повысить требования сайта к железу — перенести хранение сессий в БД. В этой статье мы рассмотрим способ хранить данные в БД, и при этом не жертвовать производительностью. Пожертвовав небольшим объемом ОЗУ можно прилично сэкономить процессорное время. Мы говорим о стиуации, когда недоступны memcached и другие специальные средства кэширования.
+44
Запустили первую в мире коммерческую магистраль на 100 Гбит/сек
2 мин
986Университет штата Индиана из США и несколько партнерских организаций смогли создать и запустить в работу коммерческую сетевую магистраль с передачей данных со скоростью в 100 гигабит/сек. Стоит отметить, что испытания велись не в США, а в Германии. Кроме того, в настоящее время на основе этой сети ведется испытание в «стрессовых» условиях, если так можно выразиться, файловой системы Люстре (Lustre) (кластерная файловая система). Пока что система показывает себя отлично.
+38
Еще раз об архитектуре сетевых демонов
13 мин
20KВо многих статьях, в том числе на хабре, упоминаются и даже описываются разные способы построения архитектуры сетевых сервисов (демонов). При этом мало у кого из авторов есть реальный опыт создания и оптимизации демонов, работающих с десятками тысяч одновременных соединений и/или гигабитным трафиком.
Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.
Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.
Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
+156
0W-httpd — простой быстрый фронтэнд
2 мин
1.6KПредлагаю решение, как быстро и просто поставить на сервере легкий фронтэнд для отдачи картинок, css-файлов и прочей статики. С лета 2002 года я для данных целей использую 0W-httpd или ZeroWait httpd, как его часто называют в разных источниках (искать что-то о нем, помимо дистрибутива, лучше по второму названию).
Установить и настроить его достаточно просто (даже слишком просто):
Установить и настроить его достаточно просто (даже слишком просто):
+48
Ближайшие события
Сервер подсчета кликов
2 мин
3.2KЕсли ваш проект использует подсчет кликов и на нем есть какая-либо солидная нагрузка, то вы наверно задумывались об отдельном решении.
История разработки уходит в один проект торгово-рекламной площадки, где необходимо было учитывать кол-во переходов. Было решение на РНР. Но это давало видимую задержку в 0.5-1 сек, что очень раздражало разработчиков (в частности меня) и я думаю пользователей тоже.
По этому, когда пришлось разрабатывать аналогичный проект, мне пришлось искать альтернативы.
История разработки уходит в один проект торгово-рекламной площадки, где необходимо было учитывать кол-во переходов. Было решение на РНР. Но это давало видимую задержку в 0.5-1 сек, что очень раздражало разработчиков (в частности меня) и я думаю пользователей тоже.
По этому, когда пришлось разрабатывать аналогичный проект, мне пришлось искать альтернативы.
+58
Анализ использования циклов процессоров Intel Core 2
3 мин
1.4KПеревод
При анализе производительности приложений с целью ее повышения, наиболее мощной из доступных является методика детального анализа циклов центрального процессора. Традиционный анализ завершения инструкций вряд ли поможет, когда мы говорим об архитектуре, применяющей переупорядочивание инструкций (Out of Order, OOO), чья основная задача и состоит в том, что бы продолжать исполнять инструкции, пока их завершение невозможно.
+13
Поиск и решение проблем масштабируемости на примере многоядерных процессоров Intel Core 2 (часть 4)
4 мин
1.5KПеревод
+9
Поиск и решение проблем масштабируемости на примере многоядерных процессоров Intel Core 2 (часть 3)
7 мин
1.5KПеревод
+17
Поиск и решение проблем масштабируемости на примере многоядерных процессоров Intel Core 2 (часть 2)
7 мин
1.5KПеревод
+20
Поиск и решение проблем масштабируемости на примере многоядерных процессоров Intel Core 2 (часть 1)
7 мин
3.1KПеревод
Адаптация программного обеспечения для эффективного использования всех доступных процессоров наиболее критична в свете намечающегося многоядерного будущего современной вычислительной техники. Кроме всех прочих препятствий, которые могут быть встречены на этом пути, существуют проблемы, связанные с совместным использованием конечной пропускной способности существующих платформ и процессоров. Правильное использование событий производительности процессора Intel Core2 позволит определить точную причину, останавливающую приложение на пути к полноценному использованию всех доступных в системе ядер.
+37
Дата-центр в водяном баке
2 мин
2.9K
По мнению инженеров городского IT-подразделения, лучше места не найти: 20-сантиметровые стены из железобетона великолепно защищают от любого шторма.
Правда, не совсем понятно, почему сетевое оборудование поместили в пристройке, а не непосредственно в защищённом здании.
+6
Вклад авторов
olegbunin 4532.5alizar 2497.3marks 1526.9olegchir 1183.4Kilor 1094.0YuriPanchul 968.3it_man 889.0AloneCoder 810.8Seleditor 782.8alatobol 685.0