Сколько запросов в минуту считается "тяжелой нагрузкой"? (Приближение)
Часто люди говорят в своих (связанных с оптимизацией и производительностью) вопросах и ответах о "большой нагрузке".
Я пытаюсь количественно оценить это в контексте обычного веб-приложения на типичном сервере (например, SO и его довольно небольшая инфраструктура) по количеству запросов в минуту, предполагая, что они возвращаются немедленно (для упрощения и определения скорости работы базы данных). и т.д. вне уравнения).
Я ищу номинальное число / диапазон, а не "где максимальный процессор" или аналогичные. Грубое приближение было бы здорово (например,>5000/ мин). Спасибо!
6 ответов
Я думаю, что правильный ответ на этот вопрос, учитывая, что вы не хотите измерять аппаратную нагрузку (процессор, память, использование ввода-вывода), заключается в том, что тяжелая нагрузка - это количество запросов в единицу времени на уровне или выше требуемого максимального количества запросов за единицу времени.
Требуемое максимальное количество запросов - это то, что было определено клиентом или тем, кто отвечает за общую архитектуру.
Скажем, X это то, что требуется максимальная нагрузка для приложения. Я думаю что-то подобное приблизит ответ:
0<легкая нагрузкаДело в том, что единственное число из воздуха не имеет никакого отношения к вашему приложению. А то, что является тяжелой нагрузкой, полностью, абсолютно неопровержимо связано с тем, что должно делать приложение.
Несмотря на то, что 200 запросов в секунду - это нагрузка, при которой небольшие веб-серверы будут заняты (~12000 в минуту).
Несколько сотен запросов в секунду.
Количество открытых соединений для большинства серверов обычно составляет около 256
или меньше, эрго 256
запросов в секунду. Вы можете подтолкнуть его до 2000-5000
для запросов пинга или 500-1000
для легких запросов. Сделать его еще выше очень сложно и требует изменений в сети, оборудовании, ОС, серверном приложении и пользовательском приложении (см. Проблему 10k).
Скорость поиска + задержка для жестких дисков составляет около 1-10 мс, для твердотельных накопителей это 0.1-1 ms
, Так что это 100-100 000
IOPS. Давайте принимать 100 000
в качестве верхнего значения ( последовательная запись SSD)
Обычно соединение остается открытым как минимум 1 x latency value
Миз. Задержка от клиента к серверу редко ниже 50-100 ms
только так 100 000/50
знак равно 2000
IOPS может создавать новые соединения.
Так, 2000
количество запросов ping в секунду от разных клиентов является базовым верхним пределом для обычного сервера. Его можно улучшить, используя RAM-диск или добавив больше SSD для увеличения количества операций ввода-вывода в секунду, маршрутизацию запросов для уменьшения пинга, изменение / модификацию ОС для уменьшения нагрузки на ядро и т. Д. Обычно оно также выше из-за того, что многие запросы поступают от одного и того же клиента (соединения) и ограниченное количество клиентов на всех. В хороших условиях он может доходить до сотен тысяч
С другой стороны, более высокий пинг, время выполнения приложения, несовершенство ОС и оборудования могут легко снизить базовое значение до нескольких сотен запросов в секунду. Кроме того, типичные веб-серверы и приложения обычно не очень хорошо подходят для высокоуровневой оптимизации, поэтому предложение Винко Врсаловича о 200
довольно реалистично
Тяжелый груз - это то, что ваша система не может выдержать.;-)
Это не простой вопрос, на который можно ответить с помощью простого числа запросов / минут.
В телекоммуникационном секторе мы часто проводим тестирование производительности и симулируем выполнение множества вызовов в секунду, чтобы попытаться выяснить ограничение. Мы продолжаем увеличивать скорость звонков, пока сервер не сможет поддерживать скорость.
Таким образом, это зависит от вашего сервера и того, что он может обработать. Это также зависит от вашей точки зрения. Например, старый 386 может обрабатывать только жалкие 50 запросов / минуту. Я бы назвал это легкой нагрузкой. Но сервер высокой спецификации может обрабатывать 60000 запросов в минуту. Это просто догадка. Я понятия не имею, может ли Apache сделать это. Наше программное обеспечение для телекоммуникаций, безусловно, может.
Я думаю, что лучше всего ответить на это с точки зрения сервера. Я бы сказал, что очень большая нагрузка - это когда вы находитесь в пределах 10% от того, что ваш сервер способен обрабатывать в течение нескольких минут или десятков минут. Тяжелый груз в пределах 15%.
Трудно ответить, потому что загрузка - это не просто вопрос запросов в единицу времени. Это зависит от того, что делают эти запросы и как они реализованы.
Например, больше операций чтения, чем записи может означать меньшую загрузку.
Асинхронная обработка записей может означать меньшую нагрузку, чем ожидание завершения синхронной обработки.
Одной из крайностей будут системы торговли акциями, которые обрабатывают миллиарды транзакций каждый торговый день. Посмотрите на типичный объем на NYSE или NASDAQ и используйте его, чтобы оценить высокое значение в минуту.
Допустим, 2B транзакции в торговый день являются репрезентативными для NASDAQ. Рынки открываются в 9 утра и закрываются в 4 вечера, так что это 7 часов *3600 секунд / час = 25200 секунд. Это дало бы в среднем 2B транзакций /25200 секунд = 79 365 транзакций в секунду - действительно очень высокая нагрузка. Очевидно, что они используют много серверов, поэтому вам нужно это число, чтобы выяснить, какой должна быть нагрузка на сервер.
Если SO можно считать хорошим эталоном, вы можете спросить о его объеме на мета.
Тяжелый груз - это все, что больше, чем указано в требованиях. Вы должны знать, как ваше приложение будет использоваться для определения того, что может представлять собой большую нагрузку. В противном случае вы можете построить Ferrari, который будет использоваться только для продуктов. Большой опыт, но трата ресурсов.