Table of Contents

JMeter - Load Development LifeCycle

About

Process - LifeCycle (Entity State) (Status)

Warning

JMeter can download the relevant resources but it does not process the HTML and execute any Javascript functions.

Phases

(Development|Small Load)

GUI Console

The GUI console is for:

Avoid XML processing

XML processing is CPU intensive because it need to build a DOM and will rapidly consume all the CPU cycles. As a general rule, the performance of XML centric applications will perform 4-10 slower than applications using binary protocols.

Avoid:

Prefer:

High Load

(Non-Gui|Command Line|Batch) Mode

Start the load in Non-Gui Mode

Different data and log files for each test run, for example:

jmeter -n -t testplan.jmx -l testplan_01.jtl -j testplan_01.log
jmeter -n -t testplan.jmx -l testplan_02.jtl -j testplan_02.log

where:

log_file='jmeter_'yyyyMMddHHmmss'.tmp' This can be used to generate a unique name for each test run.

JMeter Java options Configuration

Configure the JMeter Java options to meet your requirements.

Performance Metrics

(Remove|disable) all listeners

Remove all listeners (such as “View Results Tree” or any of the graphical reporting listeners) Listeners receive Sample Results and do some processing with it, this takes resources. They can cause the console to freeze without providing any prior alert.

The following Listeners no longer need to keep copies of every single sample. Instead, samples with the same elapsed time are aggregated. Less memory is now needed:

The best listeners to use for a long-term, high-load test are:

Generate Reports after the run

Always generate Graphs and Reports AFTER the Load Test.

Set CSV as output

To minimise the amount of memory needed, use the Simple Data Writer, and use the CSV format.

Set CSV as output for SaveService because:

In the user.properties file, add:

jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.data_type=false
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=false
jmeter.save.saveservice.assertions=false
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.assertion_results_failure_message=false
jmeter.save.saveservice.timestamp_format=HH:mm:ss
jmeter.save.saveservice.default_delimiter=;
jmeter.save.saveservice.print_field_names=true

Distributed (Remote) Testing

If you reach the limits of one machine, you can switch to distributed or remote testing. JMeter defaults are not fine for efficient remote testing, so in user.properties, add:

mode=StrippedBatch

to:

Diagnostic

Documentation / Reference