{"id":10632,"date":"2023-06-20T08:30:27","date_gmt":"2023-06-20T12:30:27","guid":{"rendered":"https:\/\/www.redline13.com\/blog\/?p=10632"},"modified":"2023-06-22T14:12:30","modified_gmt":"2023-06-22T18:12:30","slug":"jmeter-thread-group","status":"publish","type":"post","link":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/","title":{"rendered":"Understanding the JMeter Thread Group"},"content":{"rendered":"<p>As the essential component that contains samplers and logic controllers, the <a href=\"https:\/\/jmeter.apache.org\/usermanual\/component_reference.html#Thread_Group\" target=\"_blank\" rel=\"noopener\"><em>Thread Group<\/em><\/a> is the element that most <a href=\"https:\/\/jmeter.apache.org\/usermanual\/index.html\" target=\"_blank\" rel=\"noopener\">JMeter<\/a> tests start with. JMeter uses a <em>Thread Group<\/em> as the container to define a collection of simulated users. In this way, one or more requests contained within the <em>Thread Group<\/em> will follow a prescribed virtual user count, ramp-up time, and looping over this configuration if desired.<\/p>\n<figure id=\"attachment_10634\" class=\"wp-caption aligncenter\" style=\"max-width: 700px\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10634\" src=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-2.png\" alt=\"Configuring available Thread Group options within JMeter\" width=\"700\" height=\"294\" srcset=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-2.png 700w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-2-300x126.png 300w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-2-425x179.png 425w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><figcaption class=\"wp-caption-text\">Configuring available Thread Group options within JMeter.<\/figcaption><\/figure>\n<p>Above is an example of how a basic <em>Thread Group<\/em> might be configured. This thread group would proceed to start 100 independent threads over the course of one minute (60 seconds) and perform this operation for 10 iterations before closing. If we were to visualize our test in terms of its request profile as planned against a single endpoint, the following graph would represent the frequency and volume of requests generated:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10635\" src=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-3.png\" alt=\"Planned request profile for sample JMeter test\" width=\"500\" height=\"64\" srcset=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-3.png 699w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-3-300x39.png 300w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-3-425x55.png 425w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>Running this test in a real-world scenario approximates this profile, but due to external factors such as network traffic and response times we obtain the following result:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10636\" src=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-4.png\" alt=\"Actual request profile for sample JMeter test\" width=\"501\" height=\"70\" srcset=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-4.png 702w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-4-300x42.png 300w, https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-4-425x59.png 425w\" sizes=\"auto, (max-width: 501px) 100vw, 501px\" \/><\/p>\n<p>This illustrates an important point that <em>Thread Groups<\/em> should be used as a planning tool when creating your load tests. Due to external factors, the test may not always run as planned \u2013 but often this is desirable as it reveals performance insights into your load test application. The basic Thread Group is the core component from which more advanced thread components expand upon. If you are interested in learning more about advanced thread groups, check out our post on <a href=\"https:\/\/www.redline13.com\/blog\/2022\/10\/jmeter-custom-thread-groups\/\" target=\"_blank\" rel=\"noopener\">Custom Thread Groups<\/a> and the <a href=\"https:\/\/www.redline13.com\/blog\/2023\/06\/arrivals-thread-group\/\" target=\"_blank\" rel=\"noopener\">Arrivals Thread Group<\/a>.<\/p>\n<hr \/>\n<p>Did you know that RedLine13 offers a full featured, time limited free trial? <a href=\"https:\/\/www.redline13.com\/Service\" target=\"_blank\" rel=\"noopener\">Sign up now<\/a> and move your JMeter testing to the cloud today!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As the essential component that contains samplers and logic controllers, the Thread Group is the element that most JMeter tests start with. JMeter uses a Thread Group as the container to define a collection of simulated users. In this way, one or more requests contained within the Thread Group will follow a prescribed virtual user count, ramp-up time, and looping over this configuration if desired. Above is an example of how a basic Thread Group might<a class=\"more-link\" href=\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\">Read More &rarr;<\/a><\/p>\n","protected":false},"author":11,"featured_media":10635,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,7],"tags":[283,630],"class_list":{"0":"entry","1":"post","2":"publish","3":"author-dkoziel","4":"post-10632","6":"format-standard","7":"has-post-thumbnail","8":"category-blog","9":"category-jmeter","10":"post_tag-jmeter","11":"post_tag-thread-groups"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.12 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Understanding the JMeter Thread Group - RedLine13<\/title>\n<meta name=\"description\" content=\"JMeter Thread Group is the element that most JMeter tests start with, as the container to define a collection of simulated users.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding the JMeter Thread Group - RedLine13\" \/>\n<meta property=\"og:description\" content=\"JMeter Thread Group is the element that most JMeter tests start with, as the container to define a collection of simulated users.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\" \/>\n<meta property=\"og:site_name\" content=\"RedLine13\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-20T12:30:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-22T18:12:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"699\" \/>\n\t<meta property=\"og:image:height\" content=\"90\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Koziel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Koziel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\"},\"author\":{\"name\":\"David Koziel\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20\"},\"headline\":\"Understanding the JMeter Thread Group\",\"datePublished\":\"2023-06-20T12:30:27+00:00\",\"dateModified\":\"2023-06-22T18:12:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\"},\"wordCount\":291,\"publisher\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#organization\"},\"keywords\":[\"JMeter\",\"Thread Groups\"],\"articleSection\":[\"Blog\",\"JMeter\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\",\"url\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\",\"name\":\"Understanding the JMeter Thread Group - RedLine13\",\"isPartOf\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#website\"},\"datePublished\":\"2023-06-20T12:30:27+00:00\",\"dateModified\":\"2023-06-22T18:12:30+00:00\",\"description\":\"JMeter Thread Group is the element that most JMeter tests start with, as the container to define a collection of simulated users.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.redline13.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Understanding the JMeter Thread Group\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#website\",\"url\":\"https:\/\/www.redline13.com\/blog\/\",\"name\":\"RedLine13\",\"description\":\"(Almost) Free Load Testing in the Cloud\",\"publisher\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.redline13.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#organization\",\"name\":\"RedLine13\",\"url\":\"https:\/\/www.redline13.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg\",\"contentUrl\":\"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg\",\"width\":300,\"height\":68,\"caption\":\"RedLine13\"},\"image\":{\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20\",\"name\":\"David Koziel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g\",\"caption\":\"David Koziel\"},\"url\":\"https:\/\/www.redline13.com\/blog\/author\/dkoziel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Understanding the JMeter Thread Group - RedLine13","description":"JMeter Thread Group is the element that most JMeter tests start with, as the container to define a collection of simulated users.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/","og_locale":"en_US","og_type":"article","og_title":"Understanding the JMeter Thread Group - RedLine13","og_description":"JMeter Thread Group is the element that most JMeter tests start with, as the container to define a collection of simulated users.","og_url":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/","og_site_name":"RedLine13","article_published_time":"2023-06-20T12:30:27+00:00","article_modified_time":"2023-06-22T18:12:30+00:00","og_image":[{"width":699,"height":90,"url":"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2023\/06\/word-image-10632-3.png","type":"image\/png"}],"author":"David Koziel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"David Koziel","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/#article","isPartOf":{"@id":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/"},"author":{"name":"David Koziel","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20"},"headline":"Understanding the JMeter Thread Group","datePublished":"2023-06-20T12:30:27+00:00","dateModified":"2023-06-22T18:12:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/"},"wordCount":291,"publisher":{"@id":"https:\/\/www.redline13.com\/blog\/#organization"},"keywords":["JMeter","Thread Groups"],"articleSection":["Blog","JMeter"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/","url":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/","name":"Understanding the JMeter Thread Group - RedLine13","isPartOf":{"@id":"https:\/\/www.redline13.com\/blog\/#website"},"datePublished":"2023-06-20T12:30:27+00:00","dateModified":"2023-06-22T18:12:30+00:00","description":"JMeter Thread Group is the element that most JMeter tests start with, as the container to define a collection of simulated users.","breadcrumb":{"@id":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.redline13.com\/blog\/2023\/06\/jmeter-thread-group\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.redline13.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Understanding the JMeter Thread Group"}]},{"@type":"WebSite","@id":"https:\/\/www.redline13.com\/blog\/#website","url":"https:\/\/www.redline13.com\/blog\/","name":"RedLine13","description":"(Almost) Free Load Testing in the Cloud","publisher":{"@id":"https:\/\/www.redline13.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.redline13.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.redline13.com\/blog\/#organization","name":"RedLine13","url":"https:\/\/www.redline13.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg","contentUrl":"https:\/\/www.redline13.com\/blog\/wp-content\/uploads\/2013\/06\/cropped-rl13-header-logo.jpg","width":300,"height":68,"caption":"RedLine13"},"image":{"@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/51d282221e3230ab35f964f98ada9b20","name":"David Koziel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.redline13.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2babf644e0993fc86893c24d7525f1e3be114a8746c01249797f25587ae1697a?s=96&d=mm&r=g","caption":"David Koziel"},"url":"https:\/\/www.redline13.com\/blog\/author\/dkoziel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts\/10632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/comments?post=10632"}],"version-history":[{"count":3,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts\/10632\/revisions"}],"predecessor-version":[{"id":10640,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/posts\/10632\/revisions\/10640"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/media\/10635"}],"wp:attachment":[{"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/media?parent=10632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/categories?post=10632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.redline13.com\/blog\/wp-json\/wp\/v2\/tags?post=10632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}