Что такое highload?
Очень часто встречаю термины «высокие нагрузки», «высоконагруженные веб-приложения», «highload» и т.д. Хотелось бы узнать количественную (абсолютную или относительную) характеристику высоких нагрузок или же методику её расчёта (с параметрами).
- Вопрос задан более трёх лет назад
- 41659 просмотров
Комментировать
Решения вопроса 1
для меня, в разрезе веб-приложений, хайлоад начинается с сотен запросов в секунду. Запросов не к кешу статического контента, а именно к приложению. Это так, грубо.
Ответ написан более трёх лет назад
Нравится 6 2 комментария
а вообще, это очередной затасканный buzzword, который может значить все, что угодно.
присоединяюсь к этому ответу — от себя добавлю, что hilioad-приложение прежде всего должно быть изначально ориентировано на горизонтальное масштабирование, но и соответственно пара сотен запросов в секунду его не должно пугать.
Ответы на вопрос 10
Highload обычно употребляется в смысле — «умение горизонтально масштабировать веб-проект до любого теоретически достижимого числа клиентов».
По численным именам по мне лучше использовать более конкретные имена, к примеру устоявшееся C10K problem, или «как работать с 10000 одновременные коннектами пользователей» на комп. При работе с торрент-анонсером, такая проблема, к примеру, возникала.
Ответ написан более трёх лет назад
Нравится 6 2 комментария
ну торрент трекер не совсем правильный пример. Около 120000 анонсов выдерживал 2х процессорный сервер на Оптеронах и паре гигов памяти с помощью XBT.
да, мы тоже допилили и использовали xbt — благо он использует libevent и проблема с C10K в нем учтена.
120K анонсов в секунду? это круто. у нас была поменьше нагрузка 3-5K анонсов в секунду. да и машинка послабее
Highload — упереться во все ограничения сразу.
Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
Highload — это когда традиционных подходов и стандартных решений уже не хватает.
Ответ написан более трёх лет назад
Нравится 5 2 комментария
Каких традиционных? Типовая трёхзвенка (балансер->ферма WEB-серверов->DB-кластер) это традиционный подход, или нет?
Смотря для какой задачи. То, что вы перечислили может использоваться типичным шаред-хостингом, и они не будут считать, что занимаются высоконагруженным проектом.
А для сайта веб-магазина, скорее всего это будет уже называться хайлоадом, ибо типичному веб-магазину не нужна груда веб-серверов и кластер БД.
Нет ни методики ни чисел. Highload — это название состояния инфраструктуры, которая требует того, чтобы ее оптимизировали и масштабировали. Т.е. это просто описание состояния. Например, что такое уставший человек? Один может пробежать 10 км и будет уставшим. Другой уже после 500 метров и станет уставшим. Они оба уставшие, а параметры разные. Так и для ресурсов. Советую почитать — Что такое highload?
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
ее нет. Но слово и в правду модное. Таким образом каждый разработчик сам для себя решает что для него есть хайлод.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Просто люблю качественно работать
НУ если у вас есть миллион клиентов то вас смело можно звать хайлоадом 8)
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Влад Животнев @inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
200к-300к RPS к сервису — вполне себе хайлоад.
Ответ написан более трёх лет назад
zizop @zizop Автор вопроса
А если 100 rps (100K хитов в сутки), это уже не хайлоад? Пытаюсь найти ту-самую черту 🙂
Ну вот где-то так… как-только появляется нужда в масштабировании, так уже и хайлоад. Миллион запросов в сутки для типичного сервиса.
Обычно это модное слово применяют когда текущее приложение/окружение перестает справляться с моментальной нагрузкой.
Но в реальности означает немного другое и конкретные цифры сказать трудно, все относительно.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Программист, автолюбитель
По мне хайлоад это когда не хватает одного физического сервера для обслуживания клиентов. раньше хайлоад был 20 запросов в сек (без nginx), сейчас уже пожалуй и 100 запросов в сек не хайлоад (c nginx)
Хайлоад это когда начинаются пляски с маштабированием управлением администрированием кешированием.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Веб-разработка
Есть ли бесплатные сервисы куда можно выложить свой пет-проект доступный для регистрации пользователям?
- 6 подписчиков
- вчера
- 322 просмотра
Что такое highload

Прежде всего, highload — крайне относительное понятие. Оно никогда не измеряется количеством запросов или скоростью работы сайта, т.к. попросту нет такого понятия, как “средний сайт”. Все сайты специфичны и одинаковое количество запросов может приводить к совершенно разным нагрузкам на разные ресурсы.
Високорівневий курс від laba: Фінансовий аналіз.
Оцінюйте фінансову стабільність та перспективи.
Что же такое high load (читается “хайлоад”)? Правильным вопросом будет скорее — когда заканчивается “обычный” проект и начинается highload?
Когда наступает high load?
Наступает этот момент тогда, когда Ваша текущая инфраструктура начинает показывать первые признаки того, что она перестает справляться с нагрузкой. Если у Вас VPS на 128 Мб — для Вас это может быть 10 запросов в секунду. Для кого-то это может быть 10 тысяч запросов. Суть не в них, а в том, существует ли необходимость для масштабирования и оптимизации инфраструктуры.
Если Ваш сайт не справляется с нагрузкой — все, теперь Вы в клубе highload.
Симптомы
Чтобы понять, что проблема есть, ее нужно диагностировать. Именно поэтому, при любой нагрузке, Вам нужна хорошая система мониторинга. Она поможет определить тот самый момент, когда пора масштабироваться.
Програмний курс від robotdreams: С++ для GameDev.
Розробка ігор на високому рівні.
Хорошие системы мониторинга и отслеживания трендов работы серверов:
Что обычно происходит, когда приближается точка highload:
- Медленная либо бесконечная загрузка страниц
- Случайные ошибки
- Оборванные соединения от Web-сервера
- Частичная загрузка содержимого (например, нет части картинок)
Ефективний курс від mate.academy: Frontend.
Розблокуйте світ веб-розробки.
Кроме этого, обязательно пользуйтесь системой аналитики для того, чтобы понимать влияние состояния Вашего железа на пользователей:
Что делать в первую очередь?
Прежде всего нужно определить причины проблем. Следует проверить следующее:
Web-сервер
Правильно настроенный Web-сервер позволит существенно разгрузить железо.
Если Вы используете Nginx, убедитесь, что он [p28 правильно настроен]. Если на Вашем сайте есть картинки и прочие файлы, которые никогда не меняются, убедитесь, что Nginx правильно настроен для отдачи файлов.
Если Вы не используете Nginx, советую переходить на него. Согласно статистике Netcraft nginx обслуживал или проксировал 18.16% самых нагруженных сайтов в мае 2014 года.
[p42 Оптимизация клиентской части] позволит сэкономить значительное количество ресурсов и обеспечить высокую скорость работы ресурса для пользователей. Даже, если проблем на сервере нет, сайт может работать значительно быстрее.
MySQL
Наиболее часто проблемы встречаются именно в базах данных. Убедитесь, что [p27 MySQL настроен] под Ваши нужды.
Включите лог медленных запросов в MySQL и используйте инструменты для [p60 его анализа].
Експертний курс від skvot: Unreal Еngine: від інтерфейсу до запуску гри.
Запустіть свою гру з Unreal.
PHP
К удивлению, проблемы с производительностью, связанные с PHP, бывают не так часто. Тем не менее, анализ работы приложения (профилирование) позволит определить узкие места. Для профилирования стоит использовать утилиту [p65 xhProf].
Стоит ли готовиться предварительно?
Если Вы работаете над сайтом, который постепенно растет, то рано или поздно Вы перейдете в режим работы highload. Стоит ли делать что-то заранее?
Да.
Прежде всего убедитесь, что все простые вещи, которые можно было сделать, сделаны. На примере базовой оптимизации VPS можно за 10…15 минут получить существенный прирост в производительности.
С первых же дней работы включайте мониторинг. Тут работает правило — чем больше Вы знаете, тем лучше.
Но, ни в коем случае не следует заниматься предварительной оптимизацией. Иногда Вы можете угадать. Но чаще всего Вы рискуете просто потерять время на оптимизацию того, что скорее всего будет существенно изменяться. Лучше сфокусироваться на гибкости системы, что позволит быстро вносить требуемые изменения. Знайте [p7 ошибки, которых следует избегать], и не делайте их своими.
Этот текст был написан несколько лет назад. С тех пор упомянутые здесь инструменты и софт могли получить обновления. Пожалуйста, проверяйте их актуальность.
Высоконагруженные системы: введение в highload

Высоконагруженные системы (highload) стали трендом еще в 2012-ом году. По крайней мере, мы занялись ими именно тогда=) Но вот незадача – четкого определения термина нет до сих пор. Где проходят границы высоких нагрузок? 10 запросов с секунду – это уже хайлоад или еще нет? А 100, 1000? Мы вас удивим, но дело здесь совсем не в цифрах.
Высокая нагрузка – это сколько?
Для начала нужно понять одну простую аксиому: высокие нагрузки – понятие относительное. Их нельзя измерить количеством запросов, которые поступают на сервер, или скоростью работы веб-сайта. Ведь некого «среднего» количества запросов, как и «среднего» сайта, не существует. Один веб-ресурс сможет нормально обрабатывать тысячу запросов в секунду, а другой обвалится на сотом коннекте. Так что дело тут вовсе не в количественных показателях.
Мы собрали самые популярные определения highload от IT-специалистов и просто разбиравшихся в этой теме пользователей:

Хайлоад – это когда IT-система перестает справляться с текущей нагрузкой.

Хайлоад – это когда традиционных подходов к работе IT-инфраструктуры уже не хватает.

Хайлоад – это когда одного сервера становится мало для обслуживания клиентов.

Хайлоад – это когда железо не справляется с выросшими нагрузками.

Хайлоад – это когда возникающие проблемы нельзя решить имеющимися средствами.

Хайлоад – это когда инфраструктуру нужно срочно масштабировать.
Последнее определение позволяет посмотреть на определение highload под новым углом:
Это система, которая постоянно масштабируется и ресурсов которой хватает для работы с текущими нагрузками.
Таким образом, из описания состояния мы переходим к описанию качеств системы, которая растет вместе с потребностями бизнеса.
5 качеств высоконагруженной системы

Это система с огромной аудиторией
Если говорить о веб-приложениях (а именно их большинство специалистов относят к категории highload), то это тысячи, а иногда и сотни тысяч человек. Конечно, конкретную цифру назвать нельзя. Но понятно, что интернет-магазин, обрабатывающий 10 заявок в день, хайлоадом не назовешь. А вот Facebook, Amazon, Flickr, MySpace или Youtube – да, конечно.

Это распределенная система
Если приложению приходится обрабатывать огромные объемы данных, которые еще и постоянно растут, одного сервера не хватит. Самые крупные хайлоады (например, Google или тот же Facebook) работают на сотнях серверов.
Но огромное количество машин обусловлено не только высокими нагрузками. Точнее, не только большим количеством запросов, которые приходится обрабатывать в режиме нон-стоп. При таки темпах сервера быстро выходят из строя, поэтому чем их больше, тем выше вероятность, что система быстро восстановится после сбоя.

Это система с позитивной динамикой
Если интернет-предложение представляет ценность для пользователей, его аудитория растет. Поэтому хайлоад – это не просто система с большим количеством пользователей, а система, которая интенсивно наращивает аудиторию.

Это интерактивная система
Если человек вводит поисковый запрос в Google, загружает ролик на YouTube или оформляет покупку на eBay, он ожидает, что мгновенно получит результат. Если система будет долго отвечать, скорее всего, он найдет себе другое занятие. Поэтому мгновенный отклик – отличительная и очень важная черта хайлоад-системы.

Это высокоресурсная система
Этот пункт напрямую связан с предыдущим. Чтобы давать мгновенный отклик, системе проходится задействовать много ресурсов – CPU, оперативную память, место на диске и т.д. А для этого нужно, чтобы ресурсы: а) были свободными и б) были в достаточном количестве (лучше даже с запасом).
Здесь мы подходим к парадоксу высоконагруженных систем: чем стремительнее они растут, тем жестче приходится контролировать ресурсы. Когда приложение наращивает аудиторию, закономерно растет и количество запросов. А с ними – объемы ресурсов, которые нужно тратить для поддержания интерактивности.
То есть, хайлоад – это система, которую нужно постоянно масштабировать. Настроить ее работу таким образом довольно сложно, но с точки зрения бизнеса оно того стоит.
Что такое highload

Сбой сервисов Facebook 5 октября 2021 года показал, что даже в FAANG не всегда могут справиться с высокой нагрузкой (highload).
Если приложение перестало справляться с потоком запросов, страницы возвращают 404, сервисы падают, а пользователи уходят, это и есть highload. Четких критериев highload не существует. При высоких нагрузках речь не всегда идет о тысячах пользователей. У вас может быть не более 100 запросов в сутки, но они будут передавать много данных. Highload для проекта может начинаться даже от 100 пользователей.
Что влияет на highload:
- количество данных;
- сложность данных (особенно если их нужно чистить и обрабатывать);
- скорость обновления данных (например, насколько быстро устаревают данные, которые получают пользователи).
Вместе с Михаилом Михалевым, Software Engineer в Amazon и лектором курса «Архитектура высоких нагрузок», разбираемся, как работать с highload.
статьи по теме:
Big Data Consultant Антон Бондарь — об Apache Hadoop, Apache Spark и Apache Airflow.
Почему загрузка, трансформация и выгрузка данных — это один процесс.
Как бороться с проблемами
Нельзя предсказать точные объемы онлайна или составить график выхода комплектующих из строя. Когда у вас вырастет количество пользователей, вы можете купить новый сервер. Но если их станет в 100 раз больше, архитектура столкнется с трудностями.
Highload-архитектура решает проблемы с железом, софтом и человеческим фактором, минимизируя стоимость обслуживания и разработки. Архитектор такой системы должен выбрать инструменты, которые сделают ее отказоустойчивой.

Михаил: «Основная задача архитектора любой системы — понимать требования бизнеса и технической стороны. Архитектура не бывает хорошей или плохой. Она бывает подходящей и неподходящей».
Для оценки масштабирования и возможных проблем необходимо оперировать цифрами. Сколько нужно добавить вычислительных ресурсов, если количество данных возрастет в 15 раз? Что, если число пользователей в пиковую загрузку будет в 5 раз больше? Отвечая на эти вопросы, учитывайте, что:
- пользователи должны иметь постоянный доступ к вашим сервисам (High Availability);
- пользователи не должны долго ждать ответа от сервера (Latency), например, корзина в магазине не должна обновляться 5 минут;
- сервис должен иметь возможность расширяться (High Scalability).
курсы по теме:
Архитектура высоких нагрузок
Михалев Михаил
Software Engineer в Amazon
Data Engineering
Виктор Шитюк
Lead Data Engineer в Roosh
Комплектующие, софт, человеческий фактор
Для повышения надежности жестких дисков вы можете объединять их в Redundant Array of Independent Disks (RAID) — логический модуль из нескольких дисков.
Процессоры и RAM могут быть hot-swappable (подлежать замене без отключения оборудования). Если пропадет электроэнергия, в серверной будет дизельный генератор.
Что касается софтверной части, вы можете изолировать процессы и сервисы, чтобы они не утащили за собой систему в случае падения. Также помогает балансировщик — прослойка, которая принимает запрос и (в зависимости от алгоритма) возвращает пользователю адрес свободного сервера или базы данных (БД). Балансировщик может делать это несколькими способами, например, по очереди (Round Robin), отталкиваясь от географической привязки пользователя (GEO DNS) или загрузки источника данных.
Польза от балансировки не ограничивается перераспределением запросов. Она также решает проблемы с масштабированием. Например, вы можете делать резервные копии данных на нескольких серверах сразу и перераспределять их работу в связи с обновлением системы.
Но балансировка может справиться не со всеми трудностями.
Серверы почти всегда имеют разные мощности и часто выходят из строя, а запросы кэшируются. Сложная логика может привести к длительной обработке запроса. В итоге пользователь может попасть на неработающий сервер.
Не храните данные в одной таблице и даже одной БД, проверяйте, логируйте и анализируйте работу всех служб.
Права и доступы следует разграничивать, а все действия пользователей — записывать. Только у пользователей, ответственных за инфраструктуру, должна быть возможность изменять конфигурацию системы и подключать внешние устройства. Для того чтобы отделить критически важные частные сервисы от общедоступных, вы можете создать демилитаризованную зону (DMZ).

Источник: networkguru
Большинство этих проблем решают инструменты облачных платформ, например, Amazon Web Services.
Михаил: «Ключевые тренды последних лет в высоконагруженных приложениях:
- переход на облачные решения. Они снижают порог входа в хайлоад и позволяют забыть о микроменеджменте масштабируемости.
- тесная интеграция с анализом данных (от анализа логов до машинного обучения по заказам пользователей). Архитектура приложений усложняется, и важным требованием является поддержка инструментов аналитики и обработки данных».