What is JMeter?
Apache JMeter is open source pure Java desktop software, used to measure performance of variety of services and load test functional behavior and, with a focus on web applications. It can be used to test both dynamic as well as static resources which include files, Servlets, Perl scripts, DBC database connections, FTP, LDAP, Webservices, JMS, HTTP, generic TCP connections and many more. Sometimes it can also be configured and used to provide monitoring solutions. It can be also used to make a graphical and GUI friendly breakdown of performance. JMeter can also be used test a script, server or object performance under intense simultaneous loads.
The number of threads you can run effectively on a JMeter depend on how fast your server is, that is a faster server makes JMeter work more as it returns the requests faster. The more JMeter works less accurate will be the timing information. When JMeter works harder, the waiting time of each thread increases and the accuracy of timing information further decreases. Hence try to limit the number of threads. If you want to do so anyways, consider multiple running non-GUI JMeter instances on multiple systems.
There are some known bugs involved in using JMeter. One of them is that Include Controller has some problems in non-GUI mode, which causes a NullPointerException when there are two include controllers with the same name. Other problem is that, only one controller behaves correctly under a Thread group or Loop Controller, but otherwise its behavior is inconsistent.