Какой сервер мне нужен для обработки 10 миллионов запросов и запросов MySQL в день? [закрыто]

23

Я новичок в администрировании серверов и ищу мощный хостинг для размещения моего нового сайта. Этот веб-сайт в основном является серверной частью мобильной онлайн-игры и будет:

  • обрабатывать до 10 миллионов запросов HTTPS и запросов MySQL в день
  • сохранить файл до 2000 ГБ на жестком диске
  • передавать, вероятно, 5000 ГБ данных в месяц и обратно
  • он работает на PHP и MySQL
  • иметь 10 миллионов записей в базе данных MySQL, для каждой записи есть 5-10 полей, около 100 байтов каждое

Я действительно не знаю, какой сервер мне нужен для удовлетворения этих требований, мой вопрос:

  1. Какой ЦП / ОЗУ мне нужен для выделенного сервера или VPS?
  2. Какие хостинговые компании могут предложить этот вид выделенного сервера или VPS?
  3. А как насчет облачных вычислений? Я исследовал Amazon EC2, но он кажется мне сложным. И я связался с Rackspace, но странным образом они сказали, что Cloudsites не подходит для моих требований. Интересно, есть ли другая облачная хостинговая компания?
  4. Любой другой альтернативный метод?
Кальвин
источник
мы справились с этим с помощью 2 серверов linux с 8 гигабайтами оперативной памяти, mysql - это кластер mysql, и БД быстро быстро сохраняется в памяти, если вы пользуетесь хорошим дистрибутивом, процессору мало что нужно, а диск нужно использовать только делать ежечасные снимки дает вам избыточность в случае сбоя. также вы можете захотеть установить mysqltuner, чтобы вы могли следить за индексами и т. д. и наилучшим образом использовать все, а также добавлять множество индексов и вести журнал медленных запросов, поскольку для сети это может быть очень дешево, просто добавьте нагрузку балансировщик на фронте, чтобы разделить движение
минус4
Почему бы не использовать облачный сервис? Azure, Amazon, RackSpace, GoGrid, Heroku?
bbqchickenrobot

Ответы:

33

Дешевый рабочий стол?

Давайте углубимся в математику.

  • 10 миллионов запросов.
  • Это разбивает до 416667 запросов в час.
  • Это разбивает до 6944 запросов в минуту.
  • Это разбивает до 116 запросов в секунду.

Удвойте это (пиковая нагрузка), и мы говорим о нагрузке, с которой дешевый четырехъядерный рабочий стол может справиться, ЕСЛИ запросы достаточно просты, и вы на самом деле не говорите, насколько они сложны.

  • 5000 ГБ в месяц тривиально - серьезно, применяется та же математика.
  • Это ломается до 208 ГБ / день
  • Это разбивает до 8 ГБ / час
  • Это ломается до 148 МБ / мин
  • Это разбивает до 2,5 МБ / с, 25 Мбит. Двойной за пик - 50Мбит, тривиально для любого хостинг-центра. Обойдется вам, правда.

  • Храните 2000 ГБ на жестком диске. То есть 2x2000 ГБ жестких дисков в RAID? Если только это не для базы данных, она имеет много сложных операций ввода-вывода, тогда это что-то между несколькими дюжинами дисков и ЛОТОМ из 73 ГБ 15.000 об / мин дисков SAS в RAID 10 (около 60 дисков), чтобы получить необходимый ввод-вывод - это Вопрос не несет ответственности без МНОГО дополнительной информации о шаблонах доступа к данным.

  • Работает на PHP и MySQL - мой мобильный телефон может это сделать;) Вопрос в том, насколько сложным является приложение. MySQL МОЖЕТ или МОЖЕТ НЕ быть приемлемым решением здесь, кстати. - это потребует дополнительных испытаний. Есть причина, по которой некоторые люди все еще используют другие большие коммерческие базы данных.

  • Какой процессор / оперативная память мне нужен для выделенного сервера или VPS?

Можно было бы сказать, что это зависит от логики (сколько вычислений в части PHP, сообразительность или нехватка программистов и много других вопросов.

Серьезно, это нетривиальная установка. Заставьте некоторых специалистов изучить это.

В основном вам нужно спуститься и сделать свою домашнюю работу. Многие вопросы не отвечают в этой форме. Тем более, что вы, похоже, не заботитесь о своих данных ...

  • Резервные копии?
  • Нет плана действий в чрезвычайных ситуациях? Я имею в виду, что серверы умирают - так что вы в порядке, когда сайт не работает в течение нескольких дней, пока замена настроена?
TomTom
источник
Спасибо за ваш ответ. PHP прост, я думаю, что основная нагрузка на MySQL, я протестировал некоторые запросы MySQL на моем ноутбуке (Core2 Duo) с WAMP на Windows. с 10 миллионами записей в MySQL, в среднем каждый запрос стоит 0,1 секунды. насколько сильнее будет работать Quad Core при обработке запросов MySQL?
Calvin
2
Забудьте о четырехъядерном ядре. Ваш ноутбук отстой в IO - и там, где базы данных не ограничены. У вас есть ОДИН жесткий диск, то есть МЕДЛЕННЫЙ и НАДЕЖНЫЙ (латоп). Серверы используют НЕСКОЛЬКО жестких дисков, которые БЫСТРЫ (но не надежны). Я использую четырехъядерный SQL Server от MS и могу обрабатывать более 500 пакетов в секунду при простом выборе (один пакет - один выбор) без максимальной загрузки ЦП - но я получаю МНОГО активности диска на подсистеме диска, которая, возможно, более чем в 30 раз быстрее, чем у вас (и это пока не впечатляет). Диски это предел. Плюс правильное программирование.
TomTom
1
Ваш трафик ssl должен быть зашифрован / дешифрован, вы можете разгрузить его на балансировщике и сделать обратный прокси на обычном http-сервере. Это должно сдерживать задержку. Вы также можете использовать шифрование на оборудовании ....... en.wikipedia.org/wiki/SSL_acceleration, если бюджет не имеет значения для вашей базы данных, используйте ramsan.com/success/ccpgames.htm
The Unix Janitor
7

Чтобы добавить некоторые из моего опыта, который может быть полезным:

  • Как отметил TomTom, трудно / невозможно дать точные спецификации, поскольку многое зависит от дизайна и реализации вашего приложения. Аппаратное обеспечение, которое дает мне или кому-то еще X запросов / сек, может не работать для вас.
  • У меня есть выделенный сервер MySQL нижнего уровня (Intel Core2 Duo E4600 2,40 ГГц, 4 ГБ ОЗУ), обслуживающий в среднем 100 запросов в секунду (около 10 миллионов в день) с частотой простоя ЦП 90%. Помимо некоторых базовых настроек, он работает хорошо благодаря интенсивному чтению (чтение + 95%), а активный набор записей легко содержится в памяти. При выборе объема оперативной памяти сервера учитывайте размер активного набора, поскольку это может иметь большое значение. Убедитесь, что вы понимаете разницу между размером вашей базы данных и размером активного набора записей. Например, мои базы данных составляют ~ 7 ГБ, но активный набор, вероятно, составляет всего несколько 100 МБ.
  • Точно так же у меня есть сервер Apache с аналогичными характеристиками, обслуживающий ~ 1 миллион запросов в день, который имеет среднюю частоту простоя процессора ~ 95%. Запросы представляют собой смесь очень простых AJAX-запросов к картографическим данным и более сложных страниц MediaWiki.
  • Сравнительный анализ вашего конкретного приложения является хорошим началом в попытке точно определить, что вам нужно. Вы не хотите недооценивать, но переоценка может быть столь же плохой из-за потенциальной траты денег и усилий.
  • Учитывайте не только среднюю частоту запросов, но и максимальную. Вам не нужен сервер, который едва справляется со средней скоростью, поскольку частота запросов может значительно варьироваться в течение дня, недели и месяца. Например, я могу получить 3-4-кратный трафик в часы пик в выходные дни, как в минимальные часы недели. Сколько это будет варьироваться, будет зависеть от вашего приложения и базы пользователей.
  • Можете ли вы кэшировать какие-либо из ваших запросов к базе данных / HTTP? Это может значительно увеличить частоту запросов с использованием более дешевого / меньшего количества оборудования в зависимости от того, сколько вы можете кэшировать.
  • Рассмотрите варианты масштабирования для будущего роста сейчас, а не позже. Хорошим вариантом может быть использование горизонтального масштабирования, которое позволит вам начать с минимального аппаратного обеспечения и легко расти по мере необходимости.
  • Правильный дизайн вашего прикладного уровня может оказать огромное влияние на его конечную производительность. Плохой SQL-запрос к таблице без индексов может быть на несколько порядков медленнее, чем правильно спроектированный. Точно так же плохо настроенные серверы Apache / MySQL могут быть во много раз медленнее, чем при правильной настройке.
uesp
источник