Я б почав з читання статті з Вікіпедії на цю тему.
Коротше кажучи, масштабованість - це те, як зростає продуктивність системи, додаючи більше ресурсів або, як альтернатива, як збільшується використання ресурсів із збільшенням навантаження . Наприклад, скільки одночасних користувачів може обробляти ваш сайт, поки час відгуку не перевищить 0,3 секунди? Це ж питання після подвоєння доступної оперативної пам’яті / диска / процесора / тощо. Напевно, ви можете використовувати свої знання про внутрішні програми, щоб визначити, які параметри варто перевірити.
Налаштуйте тестовий стенд із серверною машиною та одним або кількома клієнтськими машинами. Використовуйте якийсь інструмент, щоб обмежити кількість ресурсів, доступних для сервера (наприклад ulimit
) або запустити якусь заважаючу програму на сервері. Виміряйте, як сервер обробляє запити клієнта. Повторіть вищесказане, поступово збільшуючи / зменшуючи навантаження, що перешкоджає / наявні ресурси. В кінці ви отримуєте n-мірний простір з крапками в ньому. Можливо, буде простіше змінювати лише один параметр одночасно, фіксуючи всі інші за деяким типовим значенням (або парою значень). У цьому випадку ви можете представити результат у вигляді групи двовимірних графіків з продуктивністю сервера (наприклад, кількістю користувачів / запитів) на одній осі та використанням / наявністю ресурсів на іншій.
Існують більш складні сценарії, коли ваша програма використовує кілька серверів для декількох частин програми, і ви можете змінювати їх кількість та співвідношення, але я думаю, це не ваш випадок. Щонайбільше, можливо, ви хочете змінити кількість потоків / процесів, якщо це має значення.
Якщо ви вимірюєте всю програму, вам зазвичай не потрібен вихідний код. Однак, можливо, вам буде цікаво виміряти якусь конкретну частину коду (наприклад, лише DB або UI). Тоді ви можете використовувати вихідний код, щоб викрити лише цей модуль для вимірювань та запустити свої тести. Це називається мікро-орієнтиром .
Якщо ви шукаєте приклади, їх багато в академічних статтях. Шукайте науковця google для оцінки ефективності + бажані умови.