Назад | Перейти на главную страницу

Сервер базы данных MySQL на VPS: сможет ли он справиться с ожидаемым всплеском трафика?

У меня есть VPS-сервис на Hostican.com. Процессор 2,7 ГГц, ОЗУ 2 ГБ (уровень 5, если вы посмотрите на сайт). У меня есть приложение для смартфона, которое запрашивает формы PHP, которые запрашивают базу данных MySQL. Я ожидаю огромного всплеска активности в течение одного дня в связи с предстоящей рекламной кампанией. Успех кампании очень важен; Я не могу позволить, чтобы сервер упал при всплеске активности.

Информация:

Основная часть трафика, вероятно, будет связана с созданием учетной записи.

Могу ли я положиться на эту настройку VPS для обработки такого трафика?

Кроме того, предполагая, что этот единственный день прошел успешно, я могу отправлять такое количество запросов учетной записи (и соответственно увеличивающееся количество запросов к другим формам PHP) каждый день после этого. Потенциально 20 000 новых аккаунтов каждый день. Я не думаю, что VPS, который у меня есть, может справиться с этим очень долго, но я не уверен, примерно, в какой момент он не справится с этим, и что мне следует делать с точки зрения обновления.

Обновить

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

Два момента, о которых я забыл и хотел добавить:

Таким образом, в целом сервер использует Apache, MySQL, PHP, SSL и exim (или другой почтовый сервер) для обслуживания этого приложения для смартфонов. Будет ли SSL и электронная почта вызывать большую озабоченность по сравнению с PHP и MySQL?

Я начну с того, что вам лучше всего будет протестировать все приложение (MySQL / PHP, а не только одно или другое) и посмотреть, каковы возможности вашего сервера. Вероятно, это будет связано с некоторыми настраиваемыми сценариями, имитирующими действия вашего пользователя. Это даст вам довольно хороший ответ о том, какой объем трафика вы можете обслуживать и нужен ли более мощный сервер.

В среднем ваши запросы составляют около 4 запросов в секунду, что довольно мало, поэтому я бы угадать что даже минимальная настройка MySQL должна справиться с этим. В качестве примера у меня есть выделенный сервер MySQL начального и среднего уровня, который в среднем дает 100 запросов в секунду (MediaWiki) при 95% простоя ЦП. Мое приложение, однако, тяжело читается, в то время как ваше, кажется, тяжело писать, что значительно меняет ситуацию.

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

Еще одна вещь, о которой следует подумать, - это производительность не MySQL, а скриптов PHP. По опыту использования PHP для веб-сайтов я бы беспокоился об этом гораздо больше, чем о 4 запросах в секунду. Даже небольшие скрипты PHP могут в спешке съесть процессор.

Спросите себя, сколько стоит эта кампания и сколько вы можете позволить себе потерять, если ваша база данных выйдет из строя через 1 час после ее начала? Вы можете получить приличный выделенный сервер на месяц за 100 долларов. Возможно, стоит даже получить два (или более) сервера, один в качестве резервного, готового к работе на случай, если первый сервер будет перегружен или неожиданно выйдет из строя.

Вы можете задать себе несколько вопросов:

  • Какова цена неудачи?
  • Сколько я готов / могу потратить на предотвращение неудач?
  • Что произойдет, если мы получим больше или намного больше обращений, чем предполагалось?
  • Какова измеренная мощность моих серверов в хитах / сек, клиентах / сек?
  • Каково текущее узкое место моей архитектуры сервера / приложения?

редактировать: Ответить на обновленный вопрос

У меня нет опыта использования SSL / электронной почты в таком масштабе. Дополнительные процессы определенно будут потреблять ЦП и, что более важно, оперативную память. Поскольку это приложение является относительно сложным, оно подчеркивает необходимость проведения некоторой формы сравнительного анализа. Гораздо сложнее угадать производительность, когда вы запускаете несколько серверных процессов на одном сервере, поскольку взаимодействие между процессами становится очень сложным, а проблемы с производительностью более тонкими. Без какого-либо тестирования вы действительно не знаете, сможет ли ваш сервер обрабатывать 10 или 10 000 пользователей.

Тот факт, что у вас очень короткое окно, в течение которого трафик будет быстро увеличиваться, делает тестирование еще более важным. В ситуации, когда ваш трафик будет неуклонно увеличиваться в течение недель / месяцев, вы можете начать использовать сервер низкого уровня и постепенно обновлять / масштабировать по мере необходимости.