You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
6.1 KiB
133 lines
6.1 KiB
3 months ago
|
1. Zip-архів із базою даних на 841 млн показань (791 МБ) можна скачати за посиланням https://drive.google.com/file/d/18oks6STkVpg4-TT2WyCIBBpCgRyF29L2
|
||
|
|
||
|
В архіві 5 файлів:
|
||
|
2.changes
|
||
|
2.snapshot
|
||
|
test.data
|
||
|
test.index
|
||
|
metrics.info
|
||
|
|
||
|
Після розпаковки їх необхідно перемістити в директорію testdir.
|
||
|
|
||
|
|
||
|
2. Якщо є бажання експериментувати з пустою базою даних, краще створити нову. Наприклад, назвемо її "x": створюємо директорію xdir, створюємо файл x.ini із такими налаштуваннями:
|
||
|
tcpPort = 12345
|
||
|
dir = xdir
|
||
|
redoDir = xdir
|
||
|
databaseName = x
|
||
|
|
||
|
Запускаємо СУБД із термінала:
|
||
|
./database_linux -c x.ini
|
||
|
|
||
|
Всі операції виконуємо в кореневій директорії проєкту.
|
||
|
|
||
|
3. Файли *.ini:
|
||
|
database.ini - налаштування СУБД (database);
|
||
|
loadtest.ini - налаштування навантажувального тесту (loadtest);
|
||
|
requests.ini - налаштування прикладів запитів (requests).
|
||
|
|
||
|
|
||
|
4. Скомпільоване ПО для Linux (64-бітна архітектура):
|
||
|
database_linux - СУБД;
|
||
|
loadtest_linux - навантажувального тест;
|
||
|
requests_linux - приклади запитів.
|
||
|
|
||
|
|
||
|
5. Скомпільоване ПО для Windows (64-бітна архітектура):
|
||
|
database_windows - СУБД;
|
||
|
loadtest_windows - навантажувального тест;
|
||
|
requests_windows - приклади запитів.
|
||
|
|
||
|
|
||
|
6. Директорія examples має три вкладені директорії із вихідними кодами:
|
||
|
database - запуску СУБД;
|
||
|
loadtest - навантажувального тесту;
|
||
|
requests - різних типів запитів, що підтримуються СУБД.
|
||
|
|
||
|
|
||
|
7. Якщо на комп'ютері встановлено компілятор Go, можна скомпілювати згадані вище програми за допомогою bash-скриптів:
|
||
|
|
||
|
./linux_build.sh
|
||
|
./windows_build.sh
|
||
|
|
||
|
Скомпільовані версії програм опиняться в кореневій директорії проєкту.
|
||
|
|
||
|
|
||
|
8. Файли з даними розміщуються в директорії datadir. В базі даних вже записано 841 млн. показань. Сумарний розмір трохи більше 1.3 GB.
|
||
|
|
||
|
|
||
|
9. Налаштування навантажувального тесту можна змінити, відредагувавши файл loadtest.ini.
|
||
|
Опція connections - це кількість одночасно відкритих підключень до СУБД.
|
||
|
Опція requestsPerConn - це кількість запитів, які відправляє потік через одне відкрите підключення.
|
||
|
|
||
|
Звіт виглядає наступним чином:
|
||
|
|
||
|
TEST RESULTS:
|
||
|
Time: 2 seconds
|
||
|
Connections: 100
|
||
|
Requests per conn: 500
|
||
|
Total requests: 50000
|
||
|
AVG request time: 3.121022ms
|
||
|
RPS: 26891
|
||
|
|
||
|
listCumulativeMeasures: 3099 (6.2%), AVG request time: 3.785916ms
|
||
|
listCumulativePeriods: 12055 (24.1%), AVG request time: 2.726391ms
|
||
|
listInstantMeasures: 1974 (3.9%), AVG request time: 6.726605ms
|
||
|
listInstantPeriods: 7710 (15.4%), AVG request time: 2.9808ms
|
||
|
listCurrentValues: 25162 (50.3%), AVG request time: 2.988301ms
|
||
|
|
||
|
last day: 20382 (82.1%), AVG request time: 2.954718ms
|
||
|
last week: 2993 (12.1%), AVG request time: 4.050662ms
|
||
|
last month: 708 (2.9%), AVG request time: 8.248486ms
|
||
|
random time range: 755 (3.0%), AVG request time: 3.540239ms
|
||
|
|
||
|
Навантажувальний тест відправляє випадкові запити до випадкових метрик. Оскільки на реальному проєкті запити та часові діапазони мають різну ймовірність - я реалізував це в навантажувальному тесті.
|
||
|
|
||
|
Приклад 1:
|
||
|
listCurrentValues: 25162 (50.3%) , AVG request time: 2.988301ms
|
||
|
означає що відправлено 25162 запитів listCurrentValues, що склало 50.3% від загальної кількості запитів. Середній час виконання (Latency) запитів listCurrentValues склав 2.99 міллісекунди.
|
||
|
|
||
|
Приклад 2:
|
||
|
last month: 708 (2.9%), AVG request time: 8.248486ms
|
||
|
означає що відправлено 708 запитів на отримання даних за останній місяць, що склало 2.9% від загальної кількості. Середній час виконання (Latency) таких запитів склав 8.25 міллісекунди. Часовий діапазон задається для всіх запитів окрім listCurrentValues.
|
||
|
|
||
|
10. Запуск навантажувального тесту:
|
||
|
Виконуємо пункт 1.
|
||
|
|
||
|
Запускаємо СУБД із термінала:
|
||
|
./database_linux
|
||
|
|
||
|
Запускаємо тест із іншого термінала:
|
||
|
./loadtest_linux
|
||
|
|
||
|
Чекаємо завершення. Звіт буде надруковано у терміналі після завершення тесту.
|
||
|
|
||
|
Команди для Windows:
|
||
|
./database_windows
|
||
|
./loadtest_windows
|
||
|
|
||
|
11. Запуск прикладів запитів:
|
||
|
Можна запускати на пустій базі даних (без скачування Zip-архіва із показаннями).
|
||
|
|
||
|
Запускаємо СУБД із термінала:
|
||
|
./database_linux
|
||
|
|
||
|
Запускаємо тест із іншого термінала:
|
||
|
./requests_linux
|
||
|
|
||
|
Результат виконання запитів друкується у терміналі.
|
||
|
|
||
|
Команди для Windows:
|
||
|
./database_windows
|
||
|
./requests_windows
|
||
|
|
||
|
|
||
|
12. Подивитись HELP:
|
||
|
./database_linux -h
|
||
|
./loadtest_linux -h
|
||
|
./requests_linux -h
|
||
|
|
||
|
|
||
|
13. Зупинити СУБД, перервати навантажувальний тест:
|
||
|
Ctrl + C
|