У меня есть некоторые основные вопросы, касающиеся понимания основ тестирования производительности. Я знаю, что при различных обстоятельствах мы можем захотеть сделать - Стресс-тестирование - Тестирование на выносливость и т. Д. Но моя главная цель здесь - обеспечить, чтобы время отклика было приличным от приложения под набором нагрузки, который находится на более высоком конце или в меньше средней нагрузки.Основы тестирования производительности
Мои вопросы заключаются в следующем:
Когда вы начинаете планировать предполагаемое время отклика приложения; что вы считаете. Если это первый шаг. Я имею в виду, теперь у меня есть веб-приложение. Я просто вытаскиваю фигуру из воздуха и говорю: «Я ожидаю, что приложение займет 3 секунды, чтобы ответить на каждый запрос». а затем выясните, чего не хватает моему приложению, чтобы получить время отклика?
Или это наоборот, и вы начинаете тест производительности с заданным набором аппаратных средств и говорите, давайте посмотрим, какое время ответа я получаю сейчас, а затем посмотрю на результаты и скажу, ну, это сейчас 8 секунд , Я бы хотел, чтобы он составлял 3 секунды, поэтому давайте посмотрим, как мы можем оптимизировать его до 3 секунд? Но снова 3 секунды из воздуха? Я уверен, что масштабирование машин только не даст времени отклика. Он получит время отклика только тогда, когда одна машина/сервер находится под нагрузкой, и вы начнете кластеризацию?
Теперь для одного пользователя у меня есть время отклика как 3 секунды, но по мере увеличения нагрузки он уменьшается экспоненциально; поэтому, где я рисую линию между «Мне нужно оптимизировать код дальше» (у которого есть верхний предел) и «Мне нужно увеличить мои серверы» (у которого тоже есть предел)
Что является лучшим бесплатным инструменты для тестирования производительности и нагрузки? Я немного использовал Jmeter. Но есть ли что-то еще, что хорошо и с открытым исходным кодом?
Если мне нужно оптимизировать код, я начинаю профилировать конкретные потоки, которые потребовали много времени на запросы?
В принципе, я хотел бы видеть, как один идет от конца до конца, выполняя тестирование производительности для своего приложения. Любые ссылки или статьи будут очень полезными.
Спасибо.
Если я правильно понимаю, профилирование приложения должно быть в последнюю очередь. Я имею в виду, что это непросто сделать, и вы не хотите тратить драгоценное время на это, если, вырвав низко висящие фрукты, я могу заставить мою систему работать достаточно хорошо? Для поддержки моего аргумента здесь есть видео http://video.google.com/videoplay?docid=-6891978643577501895# – Priyank
Я смотрел первые минуты видео, и это напомнило мне, что вы можете создавать микро-бенчмарки в форме модульных испытаний. В большинстве модулей тестирования модулей вы можете установить тайм-аут. Если тест не закончится в течение этого времени, он терпит неудачу. Теперь, если у вас есть такой неудачный тест, вы можете профилировать этот тест, чтобы узнать, где именно проблема. – pvoosten