{"id":1753,"date":"2020-10-02T08:38:18","date_gmt":"2020-10-02T08:38:18","guid":{"rendered":"https:\/\/loadfocus.com\/blog\/?p=1753"},"modified":"2021-01-20T06:03:28","modified_gmt":"2021-01-20T06:03:28","slug":"how-does-apache-jmeter-work","status":"publish","type":"post","link":"https:\/\/loadfocus.com\/blog\/2020\/10\/how-does-apache-jmeter-work","title":{"rendered":"How does Apache JMeter work?"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\"><\/span> <span class=\"rt-time\"> 2<\/span> <span class=\"rt-label rt-postfix\">minutes read<\/span><\/span><!-- pn-tldr --><h2>Key takeaways<\/h2><ul><li>JMeter builds a test plan of thread groups and samplers, then runs it as concurrent Java threads.<\/li><li>Each thread is a simulated user, so machine resources cap how many you can generate.<\/li><li>Listeners are for debugging. Leaving them on during a real run distorts the result.<\/li><\/ul><!-- \/pn-tldr -->\n<p class=\"lead\">JMeter offers the ability to simulate a number of users sending various HTTP\/HTTPS requests to a server application.<\/p>\n\n\n\n<p><strong>Apache JMeter <\/strong>is not limited to HTTP\/HTTPS, it supports other protocols like FTP,  SMTP, and much more.<\/p>\n\n\n\n<p>JMeter does not execute the Javascript from the HTML pages and it does not render the HTML received from the request.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/d2woeiihr4s5r6.cloudfront.net\/loadtesting\/load-test-configuration-new-test.jpeg\" alt=\"\"\/><figcaption><a href=\"https:\/\/loadfocus.com\/jmeter-load-testing\" title=\"jmeter load test in the cloud\">Running an Apache JMeter Load Test in the Cloud<\/a> from LoadFocus<\/figcaption><\/figure>\n\n\n\n<p>JMeter adds load to a server in order to analyse the overall behaviour of the system under test. <\/p>\n\n\n\n<p>You should be familiar with the <a href=\"https:\/\/loadfocus.com\/blog\/2020\/12\/which-is-the-execution-order-of-elements-in-apache-jmeter\/\" title=\"Which is the Execution Order of Elements in Apache JMeter?\">order of execution for elements inside a Apache JMeter<\/a> script file.<\/p>\n\n\n\n<p><em>Written by <a href=\"https:\/\/coursinator.com\/instructor\/bogdan-vazzolla\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"broken_link\">Bogdan Vazzolla<\/a>.<\/em><\/p>\n\n\n\n<p><em><a href=\"https:\/\/loadfocus.com\/\">LoadFocus<\/a> is a cloud performance, <a href=\"https:\/\/loadfocus.com\/load-testing\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"load testing tool\">load and stress testing tool<\/a> which provides the infrastructure to run tests with thousands of concurrent users, from <a href=\"https:\/\/loadfocus.com\/locations\">multiple cloud locations<\/a>, in less than a few minutes, keep history of the results, compare different runs to inspect performance improvements or performance degradation.<\/em> It also supports running <a href=\"https:\/\/loadfocus.com\/jmeter-load-testing\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"jmeter load test\">JMeter load tests from the cloud<\/a>. <\/p>\n<!-- pn-faq --><h2>Frequently Asked Questions<\/h2><h3>How does JMeter simulate users?<\/h3><p>It runs a test plan of thread groups and samplers as concurrent Java threads, where each thread is one simulated user sending requests. It also supports protocols beyond HTTP, including FTP and SMTP.<\/p><h3>Does JMeter render pages or run JavaScript?<\/h3><p>No. It does not execute JavaScript from the HTML or render the page, so it measures the server side rather than what a browser finally displays.<\/p><h3>Why turn listeners off for a real run?<\/h3><p>Because they consume memory and CPU on the load generator and distort the result. Use them while building the plan, then disable them and run headless.<\/p><!-- \/pn-faq --><!-- pn-related-reading --><h2>Related reading<\/h2><ul><li><a href=\"https:\/\/loadfocus.com\/blog\/2020\/10\/which-language-is-used-in-jmeter\">Which language is used in JMeter?<\/a><\/li><li><a href=\"https:\/\/loadfocus.com\/blog\/2016\/04\/how-to-use-apache-jmeter-to-load-test-a-web-server\">How To Use Apache JMeter To Load Test a Web Server<\/a><\/li><li><a href=\"https:\/\/loadfocus.com\/blog\/2021\/04\/what-is-hits-per-second-in-performance-testing\">What is Hits per Second in Performance Testing?<\/a><\/li><\/ul>","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\"><\/span> <span class=\"rt-time\"> 2<\/span> <span class=\"rt-label rt-postfix\">minutes read<\/span><\/span>Key takeaways JMeter builds a test plan of thread groups and samplers, then runs it as concurrent Java threads. Each thread is a simulated user, so machine resources cap how many you can generate. Listeners are for debugging. Leaving them on during a real run distorts the result. JMeter offers the ability to simulate a&#8230;  <a href=\"https:\/\/loadfocus.com\/blog\/2020\/10\/how-does-apache-jmeter-work\" class=\"more-link\" title=\"Read How does Apache JMeter work?\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":1614,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[297,19,296],"class_list":["post-1753","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache-jmeter","tag-apache-jmeter-flashcards","tag-apache-jmeter-load-testing","tag-how-does-it-work"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/posts\/1753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/comments?post=1753"}],"version-history":[{"count":0,"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/posts\/1753\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/media\/1614"}],"wp:attachment":[{"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/media?parent=1753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/categories?post=1753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loadfocus.com\/blog\/wp-json\/wp\/v2\/tags?post=1753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}