Підготовка до величезного сплеску в трафіку


35

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

Зазвичай ми отримуємо лише близько 100 відвідувань на день, тому я не маю уявлення, чи зможемо ми обробляти стільки трафіку. Ми влаштовуємо 1and1.co.uk.

Чи є якісь запобіжні заходи, які ми можемо вжити, щоб не допустити каліцтва нашого сайту?


3
Ви це читали? Я б напевно рекомендував дозволити такій службі, як CloudFlare, обробляти статичні активи як мінімум. webmasters.stackexchange.com/questions/14394/…
richhallstoke

10
Ви повинні якомога швидше поговорити з 1and1.co.uk! вони можуть перенести ваш веб-сайт до однієї з служб VPS з високим співвідношенням процесора / оперативної / пропускної здатності, що дозволить отримати шип! згодом вони можуть зменшити процесор / оперативну пам’ять, щоб заощадити гроші
Simon Hayter

1
Ви перебуваєте на спільному плані хостингу з 1 і 1? Якщо це так, вам дійсно потрібно розібратися в альтернативному рішенні (Дуже потужний VPS або хмарний хостинг) як можна швидше. Я дуже сумніваюся, що будь-яке спільне середовище хостингу може обробляти такий трафік.
Шон

3
Раніше я був веб-хостом. Більшість хостів може досить легко впоратися з подібними шипами, якщо вони знають заздалегідь і можуть допомогти вам із цілою низкою варіантів, які зазвичай не пропонуються. Причина цього проста. Вони, ймовірно, мають під рукою таке обладнання, як кеш-пам'ять, додаткові сервери, варіанти балансування навантаження, варіанти відмови тощо. Це добре для бізнесу. Більшість налаштує ці параметри безкоштовно. Це фактично нормальна частина бізнесу.
closetnoc

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

Відповіді:


26

У період високого трафіку ваш сервер повинен мати можливість обробляти всі запити відвідувачів вашого веб-сайту. Але в паралельних з'єднаннях, якими обробляє сервер, є деякі обмеження. Тому найкраще подавати запити на сторінку якомога швидше.

Ось кілька пропозицій, які слід врахувати в цих ситуаціях,

Покращення рівня програми:

1. Мінімізуйте запити HTTP, щоб пришвидшити час завантаження сторінки.

a) Об'єднайте всі файли JS разом в єдиний комбінований файл JS, а всі файли CSS в єдиний комбінований файл CSS.

b) Мінімізуйте JS та CSS файли, тому розмір файлів зменшиться та завантажується швидше.

c) Використовуйте CSS-спрайти - Коли ви об'єднуєте більшість або всі свої зображення в спрайт, ви перетворюєте кілька запитів на зображення лише в один. Потім ви просто використовуєте властивість CSS фонового зображення для відображення потрібного вам розділу.

г) Затримка завантаження зображень із ледачим завантаженням, це буде корисно для зменшення http-запитів.

2. Підготуйте полегшені сторінки, які очікують більше відвідувань:

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

б) Використовуйте статичні сторінки HTML, а не динамічні; останні розміщують більше навантаження на ваші сервери. Ви також можете кешувати статичний вихід динамічних сторінок, щоб зменшити навантаження сервера.


Поліпшення рівня сервера:

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

Коли тайм-аути зменшуються, з'єднання буде випущено незабаром, тому сервер зможе обробляти більше з'єднань.

2. Використовуйте сторонні сервіси, наприклад CloudFlare, для статичного кешування даних та захисту свого веб-сайту від зловмисних користувачів та атак, таких як DDOS.

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

4. Динамічний код кешу - Використовуйте APC для кешування коду PHP.

5. Балансування завантаження - розподілити навантаження на декілька серверів балансування навантаження.


  • Коли будуть вжиті всі необхідні дії, тепер настав час перевірити, чи готовий веб-сайт до величезного стрибка трафіку.

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

  • Крім того, у період різкого трафіку уникайте великих операцій із використання процесора, таких як копіювання веб-сайтів тощо.


3
Це все речі, пов’язані із сайтом, і чудово! Але якщо у вас відразу 200 000 запитів не потрапило на ваш сервер, це може бути недостатньо. Як попередній веб-хост, я любив розміщувати великий кеш-апарат і пробігати через сайт, завантажуючи кеш. Я б також копіював сайт на декількох серверах, навіть якщо вони спільні та реалізують балансування навантаження за допомогою проксі-сервера або брандмауера. Цього зазвичай було достатньо. Більшість людей не розуміють, що найбільша шийка пляшки - це насправді HD I / O. Збільшення пам'яті та використання її для кешу Apache та MySQL справді допомагає.
closetnoc

2
ви можете покращити відповідь! :)
Nikhil Supekar

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 тощо)

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

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

  1. Amazon має власні екземпляри баз даних (RDS), і тому наша база даних отримала ресурси для дихання. Більшість систем RDBMS живе і дихає на оперативній пам'яті, і це було щось, що ми могли отримати багато. Тепер ви також можете забезпечити SSD з високим входом / виходом, що робить іншу точку заглушення БД (записування даних) менш болісною.
  2. Ми отримали балансир завантаження з двома веб-серверами. З здоровенним сервісом БД нам не потрібні були високі передні кінці, тому ми отримали два сервери нижнього кінця.
  3. Ми переключились на щось, що може підняти повністю налаштовані машини на вимогу. Використовуючи щось на кшталт шеф-кухаря чи лялечки, ви можете легко додавати нові веб-сервери, і це 100% прозоро для кінцевих користувачів, якщо зробити все правильно. AWS також має Opsworks, так що ви можете створювати свої сценарії безпосередньо в AWS.
  4. Змініть розмір примірника на вимогу. Це КЛЮЧОВИЙ твір для нас. Якщо БД завалиться, я можу знищити її і відновити її як більшу за пару хвилин. Так, це може спричинити простої, але кілька хвилин простою - це краще, ніж години жахливо повільного сайту. Повністю боїшся простоїв? Зберігайте прочитану репліку крилами, а потім збийте її, переключіть її на більший екземпляр, просуньте майстер і ви уникнете будь-яких простоїв за вартість додаткової машини.

AWS - не єдина гра в місті (Azure, Rackspace тощо), але переконайтесь, що 1and1 може масштабуватись, щоб задовольнити ваші потреби.


1

Зверніться до свого провайдера і перевірте, чи є обмеження на вашій пропускній здатності. Оновіть план хостингу, якщо пропускна здатність недостатня для кількості очікуваного трафіку. Ви не хочете показувати вашим відвідувачам повідомлення про "Перевищення пропускної здатності".


1

З особистого досвіду я знав, що навіть найкращий VPS має свої обмеження. Я збираюся тут справжнього мирянина.

Один із наших спортивних веб-сайтів розміщувався на VPS. Під час матчу між Пакистаном та Індією ми отримали понад 70 000 переглядів. У нас був VPS Inmotinghosting з 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 і розмістили їх НС у налаштуваннях реєстратора.



0

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

Як ви могли зрозуміти з інших відповідей, це мінімальні речі, які вам потрібно зробити, щоб підготувати ваш сайт до великого збільшення трафіку. Хоча якщо ви зараз працюєте на 1and1.co.uk, ви, мабуть, не маєте сильної команди мережевих інженерів, DBA, програмістів та оптимізаторів переднього кінця, які працюють на вас.

Це, мабуть, не станеться, чи не так?

Ви не говорили про те, що ви робите зі своїм веб-сайтом, чи працює він у кошику для покупок, чи може бути застосований статичний контент Якщо це остання справа, то ви можете просто пережити цунамі, якщо скребте весь сайт у статичні файли та опублікуєте їх замість звичайного сайту (спочатку зробіть резервну копію поточної версії).

Ви також повинні розмовляти з 1and1 (з кредитною карткою в руці).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.