Я задаю очень распространенный вопрос, который приходит в голову любому разработчику, когда он / она хочет разместить сервер, но точный ответ получить нелегко. Мне нужно разместить сервер, который возвращает HTTP-ответ размером 20 КБ. Ожидается, что этот сервер будет получать десять миллионов запросов в день, максимум 10 тысяч запросов в минуту. Какой объем сервера (RAM, пропускная способность и т. Д.) Мне нужен? Давайте смело игнорируем другие факторы, такие как хранилище, емкость базы данных, например SQL и т. Д. Основная цель этого вопроса - оценить оборудование с точки зрения пропускной способности и оперативной памяти (или другого оборудования), которое может обрабатывать такое количество одновременных подключений.
Было бы очень полезно не только для меня, но и для всех, кто заинтересован, если бы человек, отвечающий на этот вопрос, объяснил, какие факторы привели к ответу. Формула, определяющая эти факторы, поможет любому изменить требования в моем исходном вопросе и прийти к необходимому ответу.
Формулы нет. Лучший способ - это попытаться получить тестовое оборудование и настроить среду, аналогичную производственной среде и тесту.
Zoredache прав: вам нужно провести реальное тестирование вашего приложения, чтобы точно планировать ресурсы. Но с учетом сказанного ...
Если вы ожидаете получать десять миллионов запросов в день, и каждый запрос составляет 20 КБ, это составляет около 190 ГБ в день или 5912 ГБ в месяц. Чтобы получить приблизительное представление о затратах на пропускную способность, Amazon взимает 0,12 доллара за гигабайт за свой сервис S3, так что вы смотрите только на пропускную способность 709,44 доллара в месяц.
Предполагаемая пиковая нагрузка составляет 10 000 запросов в минуту или 167 запросов в секунду. При 20 КБ каждый, это 3,26 МБ / с данных или около 26 Мбит / с, как обычно измеряется пропускная способность.
Если вы обслуживаете небольшие статические файлы, любой современный сервер должен справиться с этой нагрузкой. Если вы выполняете много вычислений для получения этих 20 КБ вывода, это может легко сломать даже самые мощные серверы. Не зная больше о своем приложении, невозможно определить, является ли пропускная способность ограничивающим фактором.
Удачи!
ну, точной формулы нет, но на основе предоставленных вами цифр можно оценить некоторые из необходимых характеристик.
10.000 запросов в секунду
20 КБ на запрос
равно 200000 КБ в секунду
Таким образом, игнорируя хранилище и пропускную способность ввода-вывода, вы, по крайней мере, переполните два канала 1GE.
Не зная природы ответов, я не могу дать какую-либо оценку потребностей в хранилище или оперативной памяти.
Поэтому вам нужно будет предоставить дополнительную информацию
Сможете ли вы кэшировать контент?
Вы используете PHP, ASP или аналогичный?
Если вы обслуживаете статический контент, вы можете просто использовать два сервера с огромным количеством оперативной памяти и 1GE Nic каждый, поставив 2 балансировщика нагрузки впереди.
Этого должно хватить.
Если вы обслуживаете динамический контент, эта задача становится совершенно другой игрой.