Сервер работает медленно из-за исчерпывающего использования MySQL

Краткое описание моего сайта: Это рекламная сеть, похожая на BuySellAds. Издатели регистрируют и создают рекламные пространства для своих веб-сайтов, а рекламодатели могут затем выбирать, в каком рекламном пространстве они хотят разместить рекламу.

Вот как это работает: Рекламодатель загружает объявление, а затем покупает любое рекламное пространство в течение определенного времени. При посещении сайта издателя объявление будет показываться в рекламном пространстве.

Несколько вещей должны произойти, чтобы сайт работал:

  • Интерфейс для рекламодателей для загрузки баннеров и покупки времени показа;
  • Рекламный сервер, который доставляет всю рекламу и собирает статистику (посетители, клики и т. Д.);
  • Скрипт, который выполняется на cronjob настолько быстро, насколько это возможно, для обновления баланса пользователей (в настоящее время он запускается каждые 1-5 минут, в идеале это будет бесконечный цикл);
  • Еще один скрипт для обработки статистики из данных, собранных с сервера.

В настоящее время я использую только один VPS для всего, так что, как вы можете себе представить, он довольно безответственный, он медленный, когда работают cronjobs, а иногда падает.

В идеале я думаю, что для лучшей производительности должно быть 4 сервера:

  • Внешний интерфейс
  • Рекламный сервер
  • Сервер обработки статистики
  • Сервер обработки балансов ($$)

Если внешний интерфейс будет работать только с интерфейсом для издателей и рекламодателей, рекламный сервер будет доставлять объявления и собирать данные, обработка статистики будет обрабатывать данные, а сервер обработки сальдо будет кредитовать сальдо пользователей и останавливать рекламу, когда сальдо достигнет 0.

Я пробовал с репликациями master / slave, но я не мог заставить работать так, как я хочу, потому что все 4 сервера нуждаются в привилегиях чтения / записи.

Чтобы ты делал?

-4

Решение

Я бы оптимизировал способ обработки данных. Зачем вам рассчитывать статистику, если никто не читает их? Итак, прежде чем думать о привлечении большего количества серверов, возможно:

  • Создавайте статистику только по запросу пользователя и не создавайте все сразу.
    Вы также можете отложить это, если сервер занят, на стороне клиента это не катастрофа
  • При показе рекламы также рассчитайте баланс пользователя
  • Оптимизируйте свои таблицы и запросы

Все это возможно, и у вас не должно быть проблем для реализации. У вас будут проблемы, если вы будете размещать рекламу на веб-сайтах с 3M посещений в день — чем вы должны подумать об альтернативах и, возможно, делать отложенные вставки или другие решения, которые вы найдете в сети. Но я уверен, что если вы получаете несколько миллионов запросов в день, используя один сервер — он умрет не потому, что не справится с этим, а потому, что 90% придет через 2-3 часа.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]