JMeter test: Win10 vs WSL2 vs Ubuntu 20

Привіт друзі! Мене давно мучило питання, яке є причиною безлічі холіварів – яка ОС краща? Об’єктивно – ОС для мене давно стала інструментом – і для кожної задачі свій інструмент підходить краще. І от я вирішив перевірити, чи дійсно тестування навантаження краще виконувати, запускаючи клієнт саме в Linux? Чи буде різниця в результатах? І якщо так, чи суттєва?

Не лякайтеся, далі буде багато інфи, але вона важлива, щоб зробити дослідження максимально об’єктивним. Отже, сьогодні ми будемо порівнювати один і той самий тест в JMeter на двох різних сервісах: статична веб сторінка, розгорнута в nginx та вже знайомий вам за попередніми статтями веб сервіс на Flask. Чому саме вони?

🧊 Статичний контент веб сервер повертає відповідь швидше і менше навантажується, тому є змога спостерігати максимальні можливості інструмента.

⚡️ Веб сервіси ж зазвичай тестуються частіше, відповідають повільніше і сильніше навантажують сервер.

Сам тест: 1 GET запит, статична затримка 1 сек, 1000 потоків, 30 сек розігріву, 3 хв тесту. Будемо порівнювати тест, запускаючи JMeter на одному комп’ютері в різних системах:

  • Windows 10 2004
  • Kubuntu 20.04
  • WSL2 з Ubuntu 20.04 – віртуальний Linux, вбудований в Windows

Всі тести, для виключення похибки, я виконав по 3 рази, тобто всього 18 разів 🙀.

Щоб зекономити час та місце, в таблиці результатів буду вказувати лише середні значення. І в результатах тестів також будуть відсутні метрики серверу – оскільки вони не є метою дослідження. Достатньо інформації, що під час тестів сервер не був завантажений на 100%

OSMedian response, msThroughput, rpsErrors, %
Test staticWindows4.339060
WSL24.339050
Kubuntu69930
Test WSWindows17.6672412
WSL216.337435.6
Kubuntu20.338812.8
результати тестів

Тепер давайте проаналізуємо отримані результати:

  1. Тест статики майже однаково добре пройшов у всіх трьох системах, але в Linux показава майже 10% приріст продуктивності. Це говорить нам про те, що HTTP клієнт JMeter працює в Linux швидше.
  2. Тест веб сервісу показав, що в Linux середня продуктивність на 20% більша, ніж в Windows
  3. При цьому середня кількість помилок на створення з’єднання (незважаючи на те, що в усіх системах кількість одночасних з’єднань було збільшено) в Linux в 4 рази менша, ніж в Windows
  4. Тести в WSL працюють майже так само, як і в Windows. Прогрес, оскільки в WSL 1 процес просто вмирав під час тесту. Але не показує значних переваг

Чи означають отримані результати, що однозначно всі тести продуктивності треба виконувати лише у Linux? Тут все залежить від ПЗ, що ви тестуєте. Я вважаю, системи, що під час smoke тесту демонструють низьку продуктивність (< 100 rps) можна тестувати і в Windows. Системи, що показують високу продуктивність, при інших рівних, краще тестувати з Linux машин. Плюс не треба забувати, що одна машина не може видавати навантаження необмежено – для тестів високопродуктивних систем, коли є потреба згенерувати десятки тисяч користувачів, треба тестувати розподілено (десь читав, що для JMeter це ~1000 користувачів на машину)

Як вам дослідження? Корисно? Буду вдячний за коментарі

10 November 2020
Автор: 
Oleksii Ostapov

Join the Conversation

1 Comment

  1. Дуже корисно, дякую!
    Є лише одне побажання до представлення результатів: Ви спочатку перелічили системи в послідовності Windows, Kubuntu, WSL2, а потім в таблиці результатів послідовність систем змінилась. Мене це відволікло від аналізу і сприймання результатів 🙂

Leave a comment

Leave a Reply