Это плохой способ тестирования нагрузки сервера?

Я работаю над PHP-MySQL веб-приложением, и доступные инструменты для тестирования нагрузки на сервер громоздки и запутанны. Поэтому я решил попробовать следующее, и хотел бы узнать, плохая ли это идея:

  • Добавьте время генерации страницы и memory_get_usage() к выводу каждой страницы
  • Используйте jQuery, AJAX и setInterval, чтобы ударять по странице n раз в секунду, записывая время/потребление памяти.

Вот Javascript и разметка:

<script>
function roundNumber(num, dec) {
    var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
    return result;
}

$(function(){

totalCount = 0;
i = 1;
totalTime = 0;
highest = 0;
memoryUsage = 0;

var hitsPerSecond = 1000;
var totalLimit = 100;

function testLoad(){


    if (totalCount <= totalLimit){

        $.get('/lp/user-page.php', function(data){
            $(data).filter('#page-generation-time').each(function(){
                totalTime += parseFloat($(this).text());
                $('.console').append('<p>('+i+') - Load time: '+$(this).text()+'</p>');
                            i++;
                            if (highest < $(this).text()){
                                highest = $(this).text();
                            }
                            $('.average').html('Average: '+roundNumber(totalTime/i, 5)+' - Highest: '+highest);
            });
            $(data).filter('#page-memory-usage').each(function(){
                memoryUsage = parseFloat($(this).text());
                $('.memory').html($(this).text());
            });


        });


    } else {
        clearInterval(testLoadInterval);
    }

    totalCount++;

};


var testLoadInterval = setInterval(function(){ testLoad(); }, 1000/hitsPerSecond);

});

</script>

<h2>Load Test</h2>
<div class="average"></div>
<div class="memory"></div>
<div class="console-container">
    <div class="console"></div>
</div>

Является ли это невероятно глупым/неточным способом проведения нагрузочного тестирования? Потому что кажется, что у него есть свои преимущества:

  • Легкий и простой в реализации.
  • Загружает всю страницу с помощью реального браузера.
  • Отслеживает среднее время загрузки страницы и записывает результаты прямо в браузере.

Но у меня действительно нет никаких ориентиров, чтобы понять, верны ли цифры, которые я получаю. Спасибо всем, кто может сказать мне, если я полностью ошибаюсь, и если есть что-то более удобное для пользователя, чем jMeter.

UPDATE

Не используйте это в качестве метода тестирования нагрузки на сервер. Это не даст вам точных показаний.

Используя вышеприведенный код, я смог нагрузить сервер "1,000" раз в секунду без особых проблем. Попробовав сделать то же самое с помощью ApacheBench, я обнаружил, что это ни в коей мере не отражает реальности.

Используя ApacheBench, я смог обрушить сервер, установив 40 (!) одновременных соединений.

Очевидно, что я переписал часть приложения, чтобы использовать кэшированный HTML везде, где это возможно.

Итак, отвечая на свой вопрос, да, это плохой способ тестирования сервера.

5
задан Alec Alameddine 24 April 2019 в 14:52
поделиться