Коротка відповідь: Ніхто не може відповісти на це питання, крім вас.
Довга відповідь полягає в тому, що тестування вашої конкретної навантаження - це те, що вам потрібно взяти на себе, адже це трохи схоже на запитання "Як довгий шматок струни?".
Простий статичний веб-сайт з однією сторінкою може розміщуватися на Pentium Pro 150 і зберігати тисячі показів щодня.
Основний підхід, який потрібно застосувати, щоб відповісти на це питання - це спробувати його і побачити, що відбувається. Існує безліч інструментів, за допомогою яких можна штучно піддавати вашій системі тиск, щоб побачити, де вона зависає.
Короткий огляд цього:
- Поставте свій сценарій на місце
- Додати моніторинг
- Додайте трафік
- Оцініть результати
- Лікування за результатами
- Промийте, повторіть, поки по-справжньому щасливий
Поставте свій сценарій на місце
В основному для того, щоб перевірити деяке навантаження, вам потрібно щось протестувати. Створіть середовище для перевірки проти. Якщо це можливо, це може бути досить близьким до вашої виробничої апаратури, інакше ви не зможете екстраполювати свої дані.
Налаштуйте ваші сервери, акаунти, веб-сайти, пропускну здатність тощо. Навіть якщо ви це робите на віртуальних машинах, це нормально до тих пір, поки ви готові змінити свої результати.
Отже, я збираюся встановити віртуальну машину з середньою потужністю (два ядра, 512 МБ оперативної пам’яті, 4 ГБ жорсткого диска) та встановити улюблений балансир навантаження, haproxy
всередині Red Hat Linux, на VM.
У мене також будуть два веб-сервери за балансиром навантаження, які я буду використовувати для стрес-тестування балансира навантаження. Ці два веб-сервери налаштовані ідентично моїм живим системам.
Додати моніторинг
Вам знадобляться деякі показники для моніторингу, тому я буду вимірювати, скільки запитів потрапляє на мої веб-сервери і скільки запитів я можу стискати за секунду, перш ніж користувачі почнуть отримувати час відповіді понад дві секунди.
Я також збираюсь відстежувати оперативну пам'ять, процесор і використання диска на haproxy
прикладі, щоб переконатися, що балансир навантаження може обробляти з'єднання.
Як це зробити, багато що залежить від ваших платформ і виходить за рамки цієї відповіді. Вам може знадобитися переглянути файли журналів веб-сервера, запустити лічильники продуктивності або покластися на здатність звітувати інструмент стрес-тесту.
Кілька речей, які завжди хочеться стежити:
- Використання процесора
- Використання оперативної пам'яті
- Використання диска
- Затримка диска
- Використання мережі
Ви також можете подивитися на тупіки SQL, шукати часу тощо, залежно від того, що ви спеціально тестуєте.
Додайте трафік
Ось тут справи отримують задоволення. Тепер вам потрібно змоделювати тестове навантаження. Є безліч інструментів, які можуть це зробити, з налаштованими параметрами:
Виберіть номер, будь-яке число. Скажімо, ви бачите, як система реагує на 10 000 звернень в хвилину. Не має значення, яке число ви вибрали, оскільки ви повторите цей крок багато разів, коригуючи це число вгору або вниз, щоб побачити, як реагує система.
В ідеалі, ви повинні розподілити ці 10 000 запитів на декількох клієнтах / вузлах, які перевіряють навантаження, щоб один клієнт не став вузьким місцем запитів. Наприклад, віддалене тестування JMeter забезпечує центральний інтерфейс, з якого можна запустити декілька клієнтів з керуючої машини Jmeter.
Натисніть чарівну кнопку Go і спостерігайте, як ваші веб-сервери тануть і виходять з ладу.
Оцініть результати
Отже, тепер вам потрібно повернутися до своїх показників, які ви зібрали на кроці 2. Ви бачите, що при 10000 одночасних з'єднань ваше haproxy
поле ледве розриває потужність, але час відповіді з двома веб-серверами - це сенсор протягом п'яти секунд. Це не круто - пам’ятайте, ваш час відповіді має на меті дві секунди. Отже, нам потрібно внести деякі зміни.
Лікування
Тепер вам потрібно пришвидшити свій веб-сайт більш ніж удвічі. Отже, ви знаєте, що вам потрібно або масштабувати, або масштабувати.
Щоб збільшити масштаб, отримуйте більше веб-серверів, більше оперативної пам’яті та швидших дисків.
Щоб розширити масштаб, отримайте більше серверів.
Використовуйте свої показники з кроку 2 та тестування, щоб прийняти це рішення. Наприклад, якщо ви побачили, що затримка диска була величезною під час тестування, ви знаєте, що вам потрібно збільшити масштаб і отримати швидші жорсткі диски.
Якщо ви бачили, що процесор сидів на 100% під час тесту, можливо, вам знадобиться масштабувати, щоб додати додаткові веб-сервери, щоб зменшити тиск на існуючі сервери.
Немає загальної правильної чи неправильної відповіді, є лише те, що підходить саме вам. Спробуйте збільшити масштаб, і якщо це не працює, замість цього наведіть масштаб. Або ні, це залежить від вас і трохи думати поза коробкою.
Скажімо, ми збираємося масштабувати. Тож я вирішив клонувати мої два веб-сервери (вони VM), і тепер у мене є чотири веб-сервери.
Промийте, повторіть
Почніть знову з кроку 3. Якщо ви виявите, що все не йде так, як ви очікували (наприклад, ми подвоїли веб-сервери, але час відгуку все ще перевищує дві секунди), тоді загляньте в інші вузькі місця. Наприклад, ви подвоїли веб-сервери, але все ще маєте шалений сервер баз даних. Або ви клонували більше віртуальних машин, але, оскільки вони перебувають на одному фізичному хості, ви домоглися лише більшої суперечки за ресурси сервера.
Потім ви можете скористатися цією процедурою для тестування інших частин системи. Замість того, щоб натискати на балансир завантаження, спробуйте вдарити безпосередньо веб-сервер або SQL-сервер, використовуючи інструмент тестування SQL .