Подготовка к огромному скачку трафика


35

На этой неделе наша компания появится в телешоу в прайм-тайм, и нам сказали, что на нашем сайте можно ожидать около 200 000 посетителей одновременно.

Обычно мы получаем около 100 посещений в день, поэтому я не знаю, сможем ли мы справиться с таким большим трафиком. Мы организовано 1and1.co.uk.

Есть ли какие-либо меры предосторожности, которые мы можем предпринять, чтобы предотвратить искажение нашего сайта?


3
Вы читали это? Я бы определенно рекомендовал включить такой сервис, как CloudFlare, для обработки статических ресурсов как минимум. webmasters.stackexchange.com/questions/14394/…
richhallstoke

10
Вы должны поговорить с 1and1.co.uk как можно быстрее! они могут перевести ваш сайт на одну из сервисов VPS с высоким соотношением процессоров / оперативной памяти / пропускной способности, что позволит добиться скачка! после этого они могут уменьшить ЦП / ОЗУ, чтобы сэкономить ваши деньги
Саймон Хейтер

1
У вас есть общий хостинг с 1 & 1? Если это так, вам действительно нужно искать альтернативное решение (очень мощный VPS или облачный хостинг) как можно скорее. Я очень сомневаюсь, что любая среда общего хостинга может обрабатывать такого рода трафик.
Шон

3
Раньше я был веб-хостингом. Большинство хостов могут довольно легко справиться с такими скачками, если знают заранее и могут помочь вам с целым рядом опций, которые обычно не предлагаются. Причина этого проста. Скорее всего, у них под рукой есть такое оборудование, как аппаратные кеши, дополнительные серверы, параметры балансировки нагрузки, параметры переключения при отказе и т. Д. Идея состоит в том, чтобы выглядеть так, как будто они могут справиться с чем угодно. Это хорошо для бизнеса. Большинство установит эти опции бесплатно. Это на самом деле нормальная часть бизнеса.
closetnoc

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

Ответы:


26

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

Вот несколько предложений для рассмотрения в этих ситуациях,

Улучшения уровня приложения:

1. Минимизируйте HTTP-запросы для ускорения загрузки страниц.

а) Объедините все файлы JS вместе в один объединенный файл JS, и все файлы CSS в один объединенный файл CSS.

б) Сократите файлы JS и CSS, чтобы уменьшить размер файла и ускорить его загрузку.

в) Использование CSS-спрайтов - когда вы объединяете большинство или все ваши изображения в спрайт, вы превращаете несколько запросов изображений в один. Затем вы просто используете CSS-свойство background-image для отображения нужного вам фрагмента изображения.

г) задерживать загрузку изображений с отложенной загрузкой, это будет полезно для уменьшения http запросов.

2. Подготовьте легкие страницы, которые ожидают больше посещений:

а) по возможности исключайте декоративные элементы, такие как изображения или Flash; используйте текст вместо изображений в навигации по сайту и в Chrome и поместите большую часть контента в HTML.

б) использовать статические HTML-страницы, а не динамические; последнее увеличивает нагрузку на ваши серверы. Вы также можете кэшировать статический вывод динамических страниц, чтобы уменьшить нагрузку на сервер.


Улучшения на уровне сервера:

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

Когда тайм-ауты будут меньше, соединение будет вскоре освобождено, поэтому сервер сможет обрабатывать больше соединений.

2. Используйте сторонние сервисы, такие как CloudFlare, для статического кэширования данных и для защиты вашего сайта от злонамеренных пользователей и атак, таких как DDOS.

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

4. Кэшируйте динамический код - используйте APC для кэширования кода операции PHP.

5. Балансировка нагрузки. Распределите нагрузку между несколькими серверами балансировки нагрузки.


  • Когда все необходимые действия будут предприняты, пришло время проверить, готов ли сайт к огромному скачку трафика.

    Есть некоторые сторонние сервисы, такие как loadimpact.com, которые предоставляют нагрузочное тестирование с имитацией трафика. Анализ поможет вам понять, какую нагрузку может выдержать ваш веб-сайт и что можно улучшить.

  • Кроме того, в период всплеска трафика избегайте операций с высокой загрузкой ЦП, таких как резервное копирование веб-сайтов и т. Д.


3
Все это связано с сайтом и отлично! Но если у вас не было 200 000 запросов на ваш сервер одновременно, этого может быть недостаточно. Как и предыдущий веб-хостинг, мне нравилось устанавливать большой аппаратный кеш и запускать сайт, загружая кеш. Я также копировал бы сайт на нескольких серверах, даже если они были общими, и осуществлял балансировку нагрузки с использованием прокси или брандмауэра. Этого обычно было достаточно. Большинство людей не понимают, что самая большая горлышко бутылки - это HD I / O. Увеличение памяти и ее использование для кэширования Apache и MySQL тоже очень помогает.
closetnoc

2
добро пожаловать, чтобы улучшить ответ! :)
Нихил Супекар

1
Мне нравится твой ответ! Я проголосовал за это. Пожалуйста, не обижайтесь. Я просто хотел указать на некоторые вещи с точки зрения веб-хостинга. Просто комментарий. Не хлопай. Опять же, ваш ответ превосходен! Я часто предлагаю связаться с хостом, потому что такие вещи возникают время от времени, и есть варианты, которые хост может сделать, которые помогли бы и ничего не стоили. Большинство хозяев рады за внимание! Для меня это был простой процесс, так как оборудование уже было на месте. Мне не понадобилось бы много времени, чтобы подготовить сайт к такому событию. ;-) Спасибо за приглашение.
closetnoc

1
Без обид. На самом деле мы могли бы действительно использовать ваш опыт работы с серверным оборудованием.
Нихил Супекар

1
Я ушел из отрасли более десяти лет, за исключением исследований для сетей доверия. Единственное, что мне нравится, - это добавление кеша для Apache и MySQL или подобных приложений, чтобы уменьшить количество подсистем ввода / вывода. Я сделал это здесь, и это может действительно работать. Я также предупреждаю о слишком большом объеме памяти в системах, поскольку резервное копирование т.е. Обслуживание файла подкачки (и др.) может радикально увеличить количество запросов ввода-вывода, которые обычно медленнее. Есть сладкое пятно, но я не знаю, что это за сладкое пятно. Я подозреваю, что вы гораздо больше эксперт, чем я. ;-)
closetnoc

7

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

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

Также попробуйте кешировать любые запросы к базе данных. Некоторые отличные варианты для кэширования запросов - Redis или Memcache. OpCaching - еще одно соображение, если вы используете некомпилированный язык.

Но, пожалуй, самое главное, чтобы ваш статический контент (например, CSS, JS и изображения) был максимально оптимизирован. Сократите все ваши Javascript, объедините их все в один файл, если это возможно. Помните, что каждый файл, который входит в ваш сайт, должен сделать несколько прыжков на сервере, чтобы добраться до конечного пользователя.

Не стоит недооценивать, сколько пропускной способности и времени загрузки вы можете сэкономить за счет сжатия изображений!

Наконец, рассмотрим мониторинг производительности с помощью таких инструментов, как New Relic.

Удачи!!

Источник: Один из разработчиков 12-го по популярности сайта в Великобритании по версии Alexa.


5

Подумайте о нагрузочном тестировании вашего сайта. Доступны бесплатные инструменты, такие как JMeter , The Grinder и Gatling , которые могут симулировать большое количество посетителей вашего сайта.

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


3

Если вы на 1and1, скорее всего, вы ищете дешевый хостинг. Дешевый хостинг означает, что вы склонны делать все под одной коробкой. Основная проблема хостинга заключается в том, что когда вы размещаете все в одной коробке, вы распределяете ресурсы между важными частями вашего сайта:

  • Ваш веб-сервер (Apache, Nginx и т. Д.)
  • Ваша база данных (MySQL, PostGreSQL и т. Д.)

И, будучи 1 и 1, есть большая вероятность, что вы используете панель управления, такую ​​как Plesk или cPanel, что означает, что у вас есть дополнительный слой вещей, конкурирующих за ресурсы. И последний гвоздь в твоем гробу? У вас нет много ресурсов. У вас может быть 1 процессор (или виртуальный процессор) и очень мало оперативной памяти (если у вас больше 2 ГБ, я буду удивлен).

Когда мы отказались от 1and1, мы пошли с масштабируемым хостинг-провайдером (в нашем случае Amazon Web Services) и сделали несколько вещей, которые раньше не могли

  1. У Amazon есть свои экземпляры для баз данных (RDS), поэтому у нашей базы данных есть ресурсы для дыхания. Большинство систем RDBMS живут и дышат в оперативной памяти, и этого было достаточно. Теперь вы также можете предоставлять твердотельные накопители с высоким вводом / выводом, что делает затруднительным положение других БД (запись данных) менее болезненным.
  2. Мы получили балансировщик нагрузки с 2 веб-серверами. При использовании здоровенного бэкэнда DB нам не требовались высокопроизводительные интерфейсы, поэтому мы получили два низкоуровневых сервера.
  3. Мы переключились на что-то, что могло бы поднять полностью настроенные машины по требованию. Используя что-то вроде Chef или Puppet, вы можете легко добавлять новые веб-серверы, и это будет на 100% прозрачно для ваших конечных пользователей, если все сделано правильно. В AWS также есть Opsworks, поэтому вы можете создавать свои сценарии непосредственно в AWS.
  4. Измените размер вашего экземпляра по требованию. Это КЛЮЧЕВАЯ часть для нас. Если база данных застрянет, я могу отключить ее и через пару минут перезапустить как большую. Да, это будет связано с простоями, но несколько минут простоя лучше, чем часы ужасно медленного сайта. Полностью боится простоя? Держите реплику чтения на крыльях, затем опустите ее, переключите на более крупный экземпляр, сделайте ставку на мастера, и вы избежите простоев, связанных со стоимостью дополнительной машины.

AWS не единственная игра в городе (Azure, Rackspace и т. Д.), Но убедитесь, что 1 и 1 могут масштабироваться в соответствии с вашими требованиями.


1

Проверьте с вашим провайдером и посмотрите, есть ли ограничение на пропускную способность. Обновите свой хостинг-план, если пропускной способности недостаточно для ожидаемого объема трафика. Вы не хотите показывать сообщение «Предел пропускной способности превышен» вашим посетителям.


1

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

Один из наших спортивных сайтов был размещен на VPS. Во время матча между Пакистаном и Индией мы получили более 70 000 просмотров. У нас был Inmotinghosting VPS с 4 ГБ оперативной памяти и частотой 2 ГГц, полосой пропускания 1 ТБ, хранилищем SSD и другими модными штуками. У нас также была активирована платная версия Cloudflare.

Прошел только половину матча, и сайт закрылся. Он так и не появился во время матча, и мы потеряли потенциально более 70 000 посетителей. Позже мы знали, что наша пропускная способность была использована, и без исходного хоста CDN в большинстве случаев бесполезен.

Урок: наряду с получением VPS и настройкой CND, такой как Cloudflare, минимизируйте размер своей страницы. Чем меньше, тем лучше. Вы можете использовать кэширование страниц и минимизацию кода, что очень удобно при обработке трафика.


1

Вы не очень хорошо определили «все сразу». Допустим, вы просматриваете 200 000 уникальных посетителей за полчаса. Это 111 запросов в секунду, без учета посетителей, которые просматривают и открывают больше страниц (что вам нужно, верно?).

Первое, что я хотел бы сделать, - это истории Google о людях, которые обрабатывают одинаковое количество трафика. Многие люди напишут о своем опыте в своих блогах, чтобы помочь другим. Вы заметите, что крайне сложно найти историю о ком-то, кто делает это на виртуальном хостинге, и для этого есть причина. Для начала посмотрите на такие решения, как Digital Ocean или Amazon Web Services, используя ближайший к вашей аудитории центр обработки данных. И я согласен, что выгрузка всех ваших статических ресурсов в CloudFlare, даже бесплатную учетную запись, является отличной идеей.

Кроме того, протестируйте свой код, добавив временные сценарии вверху и внизу своих страниц, предполагая, что они динамические. Если предположить, что мои предположения о числах верны, вам нужно будет обслуживать каждую страницу менее чем за 10 миллисекунд, чтобы поддерживать любой приемлемый уровень производительности. Если вы обслуживаете все запросы через SSL по умолчанию, отключите его на пару дней, пока пройдет шторм.

Кроме того, 200 000 звучит очень страшно, но имейте в виду, что вам не нужно слишком бояться (хотя вы должны быть, немного). Например, когда журнал Paper опубликовал фотографии Ким Кардашьян в NSFW, для этой нагрузки потребовалось всего четыре веб-сервера среднего размера и Amazon ELB, согласно этой статье (SFW). Я определенно не думаю, что ваша текущая установка справится с этим, но вам точно не нужно шестнадцать веб-серверов с 48 ядрами, каждый из которых оснащен собственным маленьким ядерным генератором.


1

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

Время от времени у нас есть (связанные со школьной деятельностью) сайты, размещаемые в телевизионных сетях. Поскольку мы работаем с очень ограниченным бюджетом, решение проблемы - «балансировка нагрузки». Ящики VPS могут быть довольно дешевыми в наши дни, и мы просто отражаем / дублируем наш контент на 2-3 из них.

Посмотрите на эту статью и прочитайте о "круговом".

Более подробную информацию о нагрузочном тестировании можно найти здесь .

Когда мы впервые начали пытаться обрабатывать пики, мы просто поместили наш контент на 2-3 ящика VPS и поместили их NS в настройки регистратора.



0

Удачи в переписывании вашего сайта, смене провайдеров и переносе контента в CDN менее чем за неделю.

Как вы, возможно, поняли из других ответов, это минимальные вещи, которые вам нужно сделать, чтобы ваш сайт был готов к значительному увеличению трафика. Хотя если вы в настоящее время используете 1and1.co.uk, у вас, вероятно, нет сильной команды сетевых инженеров, администраторов баз данных, программистов и оптимизаторов внешнего интерфейса, работающих на вас.

Это вряд ли произойдет, не так ли?

Вы не сказали, что вы делаете со своим сайтом, запускает ли он корзину покупок или может ли он быть реализован со статическим контентом. Если последнее так, то вы можете просто пережить цунами, если вы соберете весь сайт в статические файлы и опубликуете их вместо обычного сайта (сначала сделайте резервную копию текущей версии).

Вы также должны говорить с 1and1 (с вашей кредитной картой в руке).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.