jmeter server mode setting

Upload: nitin-tyagi

Post on 06-Apr-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 JMeter Server Mode Setting

    1/4

    JMeter mode setting : Helps in optimizing the load

    generation

    by PATEL AKHILKUMARon OCTOBER 3, 2011

    Preface:Oftentimes, we have observed that the Jmeter samples of load scenarios dont match with

    previous runs or dont match among different servers in standalone and client server

    environment (distributed) etc. The results/samples depend on the many parameters like

    SUT version, time of execution, data in back end, pacing of requests, think time between

    requests and iterations and jmeter server/client performance etc. But these situations are

    known and in general, load test engineers will try to setup and keep everything else

    consistent during all the test execution. However, of if you still notice differences in

    samples of hits per seconds, response time etc. during test execution from different

    systems, then you should first verify your load test setup. This blog will will help you to

    identify the initial steps for handling situations where you notice such differences:

    Reduce sampling impact on load generation:The load generation process can be impacted highly (or negligible) based on the usage of

    the memory, cpu, disk and network by the jmeter server and/or client. In all of these

    scenarios, the network traffic can impact load generation heavily if we are using distributed

    load execution scenario and system is sending all the samples to client immediately,

    depending on the network and network adapter traffic handling capacity as well as on the

    client system performance (which is obvious in all of the cases). Even jmeter sends the

    samples back to client as they are generated and client writes it to file on receipt as a

    default behavior means it uses network resources and client machine memory , disk and

    cpu for same. So, if client machines network or other resources performance are faulty,

    then it will impact on servers load generation activity adversely. To avoid this, set the

    sample sending mode appropriately and you will find more on mode as moving forward on

    this post.

    There are total 7 modes for sampling in JMeter:

    1. Standard

    2. Hold

    3. Batch

    4. Statistical

  • 8/2/2019 JMeter Server Mode Setting

    2/4

    5. Stripped

    6. StrippedBatch

    7. Custom Implementation

    Standard Default mode

    This will send the samples to client as they are generated and client will write it to file

    on receipt in distributed environment. Same way it will try to write in file immediately

    in standalone environment. This will use less memory of load generating system but

    impact on load generation as the next requests will be sent after the samples sending is

    completed by network layer. So if the receiving clients network is slow then the

    sample sending will be slow and which can impact on requests sending to SUT. Still if

    the standard mode is required then try to reduce sampling interval means reduce theclient server communication and sampling size. It is advisable to run small test in

    standalone mode and server mode and if you found difference then try to check the

    network and system performance.

    Hold mode

    In this mode, the sample data is held in an array in the memory and will be saved to file

    at the end of run by client after sending this data to client in distributed mode while it

    get saved at last in standalone environment (not advisable to use this mode in

    standalone if disk IO is performing well). But as you must have already guessed, it is a

    memory consuming mode and it can be a major cause for system crash . So, it is

    advisable tthink thrice before using this mode. For small load test it is among best load

    generation modes. Run small tests and watch the increase in memory usage to

    understand how risky it is to use this mode and how best to use this mode.

    Batch modeThe system send samples in batch as per the defined threshold of samples or time. So

    set following property appropriately:

    num_sample_threshold number of samples in a batch (default 100)

    time_threshold number of milliseconds to wait (default 60 seconds)

    But sometimes it impact advertly if client network and system performance is not good.

  • 8/2/2019 JMeter Server Mode Setting

    3/4

    Statistical mode

    This mode is mainly for summarized sampling and do not samples all the fields. Also,

    the sampling rate is depends on the properties described with batch mode. The samples

    would be grouped as per thread group name and sample label. It accumulates onlyfollowing fields and other fields that changes between samples will be ignored:

    Fields which will be accumulated are: 1. Elapsed time, 2. Latency, 3. Bytes, 4. Sample

    count and 5. Error count.

    This mode somewhat reduces the samples data impact over the network and will use

    very less resources of client as well in distributed environment. So it is advisable to

    setup effiecient thresholds after consideration of client system performance, network

    performance etc.

    Stripped mode

    This mode is nothing but standard mode without response data of successful samples.

    StrippedBatch mode

    This is nothing but the Batch mode without response data of successful samples.

    Custom implementation mode

    We can write our own custom sample sender class to customize the sampling behavior

    and set the mode parameter to this custom sample sender class name.

    This must implement the interface SampleSender and have a constructor which takes a

    single parameter of type RemoteSampleListener.

    For example:

    public class PdfResponseSampleSender implements

    SampleSender, Serializable { //The code will just show the

    basic implementation and may be missing some required

    implementation to fit in standard practice. private static

    final Logger log = LoggingManager.getLoggerForClass();

  • 8/2/2019 JMeter Server Mode Setting

    4/4

    //SampleSender have a constructor which takes a single

    parameter of type RemoteSampleListener. So following will

    be used for that. private final RemoteSampleListener

    listener; PdfResponseSampleSender(RemoteSampleListener

    listener) { this.listener = listener; } //It will be fired

    while sample started and stopped public void

    sampleOccurred(SampleEvent event) { //Basically it is

    advicable to create enum of mime types. but here we just

    using it directoly in string variable String

    pdfType="application/pdf"; SampleResult result =

    event.getResult(); //Empty the response data if the media

    type is not pdf.

    if(result.getMediaType().compateTo(pdfType)!=0)

    { result.setResponseData(new byte[0]); } try

    { listener.sampleOccurred(event); } catch (RemoteException

    e) { log.error("Error sending sample result over network

    ",e) } } }

    We can set mode=org.example.load.PdfResponseSampleSender into

    jmeter.properties and make sure that this class is reachable to jmeter.

    Conclusion:I would say that we can resolve any load generation issue easily as jmeter isvery flexible and supports customization for most of the activities of L & P

    testing.

    If you have any questions, please post those in the comments below, and I

    will try to answer those as soon as I can!

    PS: All opinions in this post are my personal and it may or may not be of

    Infostretch. Also, I have taken help of JMeter user manual and source code

    for this blog post.