Я работаю над PHP-MySQL
веб-приложением, и доступные инструменты для тестирования нагрузки на сервер громоздки и запутанны. Поэтому я решил попробовать следующее, и хотел бы узнать, плохая ли это идея:
memory_get_usage()
к выводу каждой страницы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.
Не используйте это в качестве метода тестирования нагрузки на сервер. Это не даст вам точных показаний.
Используя вышеприведенный код, я смог нагрузить сервер "1,000" раз в секунду без особых проблем. Попробовав сделать то же самое с помощью ApacheBench, я обнаружил, что это ни в коей мере не отражает реальности.
Используя ApacheBench, я смог обрушить сервер, установив 40 (!) одновременных соединений.
Очевидно, что я переписал часть приложения, чтобы использовать кэшированный HTML везде, где это возможно.
Итак, отвечая на свой вопрос, да, это плохой способ тестирования сервера.