Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: missing edit-log entry for this revision

The JMeter FAQ

  • Wiki Markup

...

*Navigation trail:* \["JMeterProjectPages"\]

The JMeter FAQ

...

  • \[http://www.bonoy.com/a/index.php?name=PNphpBB2&file=viewtopic&t=276  Simple Chinese Version\]
    \\

TableOfContents

How to do remote testing the 'proper way'?

Answer: Here are a few notes to help you on your way.

...

  1. Your application server. You shouldn't run anything on this machine that you wouldn't have running on it in your proposed or actual production environment (if you are running anything else, including JMeter, you will be adding load to the server and thus tainting your results).
  2. Wiki Markup
    One or more machines running jmeter-server (the \["JMeterEngine"\]).  You want these machines to be reasonably close (network wise) to the application server.  By "reasonably close" I mean on the same Ethernet segment or at least with no low speed links between them.  The JMeter User Manual provides reasonable information about doing this (note however.
  3. Wiki Markup
    A single machine running the typoJMeter -GUI thethat thirdyou jaruse fileto iscontrol missingthe themachines allrunning importantthe \["JMeterEngine".jar" at the end of the line (this is fixed in cvs, but it won't appear on the site until it is next updated)).
  4. Wiki Markup
    A single machine running the JMeter GUI that you use to control the machines running the \["JMeterEngine"\].
    \\
  5. \].
    \\

Wiki Markup
While you are developing your scripts and for only moderate levels of user testing (assuming you are "close" to the application server) you do not need to involve any \["JMeterEngine"\] machines.  
The reason you have these are to:
Wiki Markup
While you are developing your scripts and for only moderate levels of user testing (assuming you are "close" to the application server) you do not need to involve any \["JMeterEngine"\] machines.  The reason you have these are to:

  1. Eliminate the impact of slow network connections when you are not "close" to the application server.
  2. Execute more test threads than your local machine is capable of handling.

ScottEade 2003-01-21

Question: How to run JMeter test plan programatically, such as from an Ant script?

Wiki Markup
*Answer:* Quick answer, go here: http://www.programmerplanet.org/ant-jmeter/. I have permission from the author of this ant task to add it to JMeter's distribution, which I will do as soon as I have the time.\["It should now be in the extras folder"\].

Question: How can I do stress testing of EJBs?

Note that if the GUI is running multiple remote servers, it can easily become a bottle-neck, especially if a lot of listeners are being used. Remove all unnecessary listeners before running stress tests.

Running JMeter in non-GUI (batch) mode is preferable, as this uses far fewer resources. The output log files can be merged after the test run and used to create overall test statistics. (CVS files can just be appended to each other; XML output files need a bit of editting to maintain well-formedness.)

If there are several nodes running the JMeter test plan, it is a good idea to try and ensure that their clocks are synchronised, as this makes it easier to analyse the data later.

How to run JMeter test plan programatically, such as from an Ant script?

Answer: Quick answer, go here: http://www.programmerplanet.org/ant-jmeter/. I have permission from the author of this ant task to add it to JMeter's distribution, which I will do as soon as I have the time. (It should now be in the extras folder).

How can I do stress testing of EJBs?

Answer: You can use the JavaSampler classes to write your own class that runs your EJB's, and then JMeter will take over the threading and reporting. This, however, Answer: You can use the JavaSampler classes to write your own class that runs your EJB's, and then JMeter will take over the threading and reporting. This, however, is not ideal. Someone needs to write a good EJB Sampler implementation for JMeter (hint, hint).Question:

Why do HTTP 3xx redirects appear as errors ? Is there a way to make them appear as HTTP 200 OK

Answer: Quick answer: They appear as an error because 302 != 200, at least in v 1.8.1.

Wiki Markup
Long answer: try using v1.9RC1, the code in  \[http://cvs.apache.org/viewcvs.cgi/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java?rev=1.40&content-type=text/vnd.viewcvs-markup HTTPSampler\] seems to take into account the result code for the redirect instead of the redirect result code.
Question:

How do I parameterize my JMeter test cases?

Answer: Parameters can be set at both the Test Plan and Thread Group levels.

...

When you view the results in the View Results Tree, you can see the ${category} value was replaced with the value from the User Parameters. Each thread will use the category from the User Parameter setting automatically. If there are more than two threads, they will reuse the values in these settings, so the third thread would use DOGS.Question:

How do I make parameters dynamic, reacting to the unique server responses of each test run?

Answer: You can use the Regular Expression Post Processor to extract a value from a response, and then reuse this response in another request. Looking at the previous question in this FAQ, you could extract the product id from the result and use it in the following request:

...

When you view the results in the View Results Tree, you can see the ${product} value was replaced with the value extracted by the regular expression.Question:

How do I pass parameters into my Test scripts? I want to be able to use the same script to test with different numbers of threads and loops, and I don't want to have to change the script each time.

*
Answer:*as explained above, you can use functions and variables just about anywhere in the test plan. So if you want to pass in a value a run-time, just use the __property() function, which reads the value of a JMeter property.

...

if you omit the value, it defaults to 1Question:

How do I use external data files to in my Test scripts?

*
Answer:*One way to do this is to create a User Parameters Pre-Processor in which you list all the values that you want to read from files. You can then use the variable names later in the script.

...

N.B. If using such a script in client-server mode, make sure that any data files are copied to the appropriate place on the server host, as the files will be opened by the server process, not the client. Wiki Markup*Question:*_I

I'm

...

having

...

difficulty

...

getting

...

JMeter

...

to

...

work

...

with

...

SSL

...

(HTTPS).

...

What's

...

the

...

problem?

Wiki Markup
*_
*
Answer:* Check out the documentation  \[http://jakarta.apache.org/jmeter/usermanual/get-started.html item 2.2.4\].  _\[A lot of people struggle with this, either because of private certs or whatever - I'm looking for a page that details common trip-ups and solutions for them. - MikeStover\]_
Question:_

I'm having difficulty building Jmeter from NetBeans IDE. It is looking for a org.apache.log.Hierarchy, which log util is it looking for?

...

Answer:* Make sure to mount all of the jars in the lib folder.Question:_

Has anyone out there used JMeter as part of junit testing? I'd like to think that by using assertions with a custom JUnit listener JMeter could be run in as part of functional testing.

...

Answer:* It's a great idea to write some glue between JMeter and JUnit for just this purpose. It doesn't exist currently, though there is an Ant task for JMeter that you might find useful.

Can JMeter record HTTPS requests using the recording proxy?

Wiki Markup
*QuestionAnswer:*_CanNo. JMeter record HTTPS requests using the recording proxy?_
*
Answer:*No.  JMeter would never be able to decipher the encrypted requests the browser sends.  SSL Proxies create a tunnel from the browser to the destination server but do not and cannot read the messages.  Check out \[http://www.badboy.com.au/ BadBoy\] for a possible solution.
Question:

How can I display the response text my assertation runs against?

*
Answer:*You can display your server's response text in the View Results Tree listener.Question:

Is there a JMX Schema/DTD available?

*
Answer:*No. Don't plan on having one either at this point. Changes would be too frequent to realistically keep up with. Question:

What happens with redirects when asserting HTTP responses?

*
Answer:*Assertions aren't smart enough to do the right thing with redirected requests - currently the 302 response would be asserted against. You can get around this by recording your test plans and leaving "follow redirects" off.

...

JMeter will then not see the redirects at all. Wiki Markup*Question:*_

I've

...

set

...

the

...

CLASSPATH,

...

but

...

JMeter

...

is

...

not

...

picking

...

up

...

my Jars

Wiki Markup
* Jars_
*
Answer:*The CLASSPATH variable is ignored when using the -jar flag. For some further information on this, see:\[http://java.sun.com/j2se/1.4.12/docs/tooldocs/findingclasses.html#userclass How the Java launcher finds user classes \]

...

Wiki Markup
If you want your jar file to be available to all Java applications, it can be placed in the \[http://java.sun.com/j2se/1.4.12/docs/tooldocs/findingclasses.html#extclass JVM extensions directory\]

...

*Question:*_
Wiki Markup
after adding \["ApacheJMeter"\].jar to the classpath
Wiki Markup

What

...

Pattern

...

matching

...

(regexen)

...

does

...

JMeter

...

support?

Wiki Markup
*_
*
Answer:*JMeter includes the pattern matching software \[http://jakarta.apache.org/oro/ Apache Jakarta ORO\]. There is some documentation for this on the Jakarta web-site. There is also documentation on an older incarnation of the product at \[http://www.savarese.org/oro/docs/OROMatcher/index.html OROMatcher User's guide\], which might prove useful. The pattern matching is very similar to the pattern matching in Perl. A full installation of Perl will include plenty of documentation on regular expressions - look for perlrequick, perlretut, perlre, perlreref. O'Reilly sell a book called "Mastering Regular Expressions" by Jeffrey Friedl which will tell you all you need to know (and a lot more) about regular expressions. There are a couple of chapters available on their web-site covering REs in Java and .NET, and the Java chapter has a \[http://www.oreilly.com/catalog/regex2/chapter/ch08.pdf section on ORO (PDF)\] - worth a look.

It is worth stressing the difference between "contains" and "matches":

  • "contains" means that the regular expression matched at least some part of the target, so 'alphabet' "contains" 'ph.b.' because the regular expression matches the substring 'phabe'.
  • "matches" means that the regular expression matched the whole target. So 'alphabet' is "matched" by 'al.*t'. In this case, it is equivalent to wrapping the regular expression in ^ and $, viz '^al.*t$'. However, this is not always the case. For example, the regular expression 'alp|.lp.*' is "contained" in 'alphabet', but does not match 'alphabet'.

Why? Because when the pattern matcher finds the sequence 'alp' in 'alphabet', it stops trying any other combinations - and 'alp' is not the same as 'alphabet', as it does not include 'habet'.

See RegularExpressions for more details and examples

I want to use “Monitor Results” of JMeter

Currently I am using WAS 5.0 Application Server . For “Monitor Results” , JMeter shows the example for TOMCAT 5.0 WebServer.

“”””( Followings from JMeter doc )

Add the HTTP Request to the Thread Group element (Add --> Sampler --> HTTP Request). Then, select the HTTP Request element in the tree and edit the following properties):

Change the Name field to "Server Status". Enter the IP address or Hostname Enter the port number Set the Path field to "/manager/status" if you're using Tomcat. Add a request parameter named "XML" in uppercase. Give it a value of "true" in lowercase. Check "Use as Monitor" at the bottom of the sampler
“””””
Please let me know how I can set “Monitor Results” of JMeter in WAS5.0.

To use the JMeter Monitor for IBM WAS5.0, you will need to port the status servlet from Tomcat5 to WAS. Your other option is to write your own status servlet and output the data in the correct format. Tomcat5 includes the schema for the status data. If you have any further question, feel free to email the jmeter-user mailing list.

JMeter keeps getting "Out of Memory" errors. What can I do?

This is usually caused by including memory intensive listeners in your stress test. Listeners like "View Tree Results" are useful for debugging your test, but they are too memory intensive to remain in your test when you ramp up the number of simulated users and iterations. The best listeners to use for a long-term, high-load test are Aggregate Listener, Graph Listener, and Spline Listener.

In addition, you can instruct the JVM to use more memory by editing the jmeter/jmeter.bat files for linux/windows. Within these files, find a section that sets values for the Heap:
set HEAP=-Xms256m -Xmx256m

Feel free to change these values. Xms indicates the starting RAM the jvm will take, and Xmx will be the maximum it is allowed (for the HEAP).

Does JMeter process dynamic pages (e.g. Javascript and applets)

No. JMeter does not process Javascript or applets embedded in HTML pages.

JMeter can download the relevant resources (some embedded resources are downloaded automatically if the correct options are set), but it does not process the HTML and execute any Javascript functions.

If the page uses Javascript to build up a URL or submit a form, you can use the Proxy Recording facility to create the necessary sampler. If this is not possible, then manual inspection of the code may be needed to determine what the Javascript is doing.Note: unlike Perl, there is no need to (i.e. do not) enclose the regular expression in //. So how does one use the Perl modifiers ismx etc if there is no trailing /? The solution is to use Perl5 extended regular expressions, i.e. /abc/i becomes (?i)abc