Какой сервер мне нужен для обработки 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, сообразительность или нехватка программистов и много других вопросов.

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

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

  • Резервные копии?
  • Нет плана действий в чрезвычайных ситуациях? Я имею в виду, что серверы умирают - так что вы в порядке, когда сайт не работает в течение нескольких дней, пока замена настроена?

Спасибо за ваш ответ. 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 могут быть во много раз медленнее, чем при правильной настройке.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.