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

Как справиться со слишком большим трафиком

У компании, в которой я работаю, в ближайшем будущем состоится мероприятие, которое, как мы полагаем, будет генерировать трафик примерно в 3-4 раза больше, чем мы имели дело в прошлом, и я не уверен, как лучше всего справиться с таким огромным и внезапным увеличением. Несколько месяцев назад у нас было мероприятие, на котором в течение дня было проведено около 15000 сеансов, и наши системы существенно вышли из строя, нашей команде по обслуживанию клиентов потребовалось две недели, чтобы разобраться в беспорядке со всеми заказами, которые были отклонены или неправильно выполнены.

С тех пор мы значительно увеличили наши аппаратные характеристики, но я был бы впечатлен, если бы мы могли обрабатывать 25000 сеансов без каких-либо проблем. Мы уже исчерпали возможности нашего SQL-сервера для нашего хоста облачных вычислений и планируем увеличить количество веб-серверов. Так что, учитывая, что мы ожидаем 45 000-60 000, мне интересно, стоит ли мне начинать планировать худшее.

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

TL; DR:

Вот основные вопросы

  1. Является ли ограничение трафика для предотвращения краха даже правильной идеей? Сделал бы это какой-нибудь хороший админ?
  2. Может ли балансировщик нагрузки ограничивать подключения к каждому серверу? Если нет, то лучший способ сделать это, ограничив его на каждом веб-сервере?
  3. Если я ограничу каждый веб-сервер 200 подключениями, что произойдет, когда балансировщик нагрузки попытается отправить 201-е подключение? Он сбрасывается или перенаправляется на другой сервер с меньшим количеством подключений?

Во-первых, я бы точно выяснил, каковы ограничения вашего сервера, чтобы вам приходилось работать с твердыми цифрами. Apache создает инструмент для стресс-тестирования (конечно, я предполагаю, что вы используете Apache, но другие веб-серверы имеют похожие утилиты) https://httpd.apache.org/docs/2.4/programs/ab.html

Чтобы помочь вашей системе в целом, я бы рекомендовал как можно больше использовать CDN. Это может значительно сократить общее количество подключений за счет разгрузки повторяющихся запросов статических элементов на другие серверы.

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