{"id":29671,"date":"2023-12-05T17:37:14","date_gmt":"2023-12-05T16:37:14","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=29671"},"modified":"2024-09-11T10:16:03","modified_gmt":"2024-09-11T08:16:03","slug":"jmeter-remote-testing","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/","title":{"rendered":"JMeter Remote Testing"},"content":{"rendered":"\n<p>A typical web application architecture with a load balancer, two application servers and a database looks like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"739\" height=\"249\" src=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png\" alt=\"\" class=\"wp-image-29672\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png 739w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw-300x101.png 300w\" sizes=\"auto, (max-width: 739px) 100vw, 739px\" \/><\/figure>\n\n\n\n<p>If you run a JMeter, or any load test tool, from one unique server or workstation, the load balancer will most likely route all traffic to only one of the application servers.<\/p>\n\n\n\n<p>Why is that? Mainly because the load balancer uses the incoming IP (the IP of the workstation) as the key to maintain sticky session. Thus, this way of testing application will not be valid compared to real user traffic.<\/p>\n\n\n\n<p>Fortunately, JMeter support <a href=\"https:\/\/jmeter.apache.org\/usermanual\/remote-test.html\" target=\"_blank\" rel=\"noreferrer noopener\">remote testing<\/a>. This will make connection coming from different IP and will improve how the load is balanced between the application servers.<\/p>\n\n\n\n<p>In this blog post, I will explain how to set this up and how to run a scenario.<\/p>\n\n\n\n<p>By the way, to setup these servers in the cloud, which is the ideal solution to have different remote IPs, I used <a href=\"https:\/\/www.dbi-services.com\/fr\/produits\/yak\/\">YaK<\/a> to provision them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-setup-remote-jmeter-server\">Setup Remote JMeter Server<\/h2>\n\n\n\n<p>JMeter uses RMI protocol to pass commands between JMeter controller and servers. To secure this traffic, we must first create a Java Key Store (jks) that will store key and certificate. A script is provided inside bin directory of Apache JMeter to achieve that:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nbin# .\/create-rmi-keystore.sh\nWhat is your first and last name?\n  &#x5B;Unknown]:  rmi\nWhat is the name of your organizational unit?\n  &#x5B;Unknown]:  OU\nWhat is the name of your organization?\n  &#x5B;Unknown]:  ORG\nWhat is the name of your City or Locality?\n  &#x5B;Unknown]:  Basel\nWhat is the name of your State or Province?\n  &#x5B;Unknown]:  BS\nWhat is the two-letter country code for this unit?\n  &#x5B;Unknown]:  CH\nIs CN=rmi, OU=OU, O=ORG, L=Basel, ST=BS, C=CH correct?\n  &#x5B;no]:  yes\n\nCopy the generated rmi_keystore.jks to jmeter\/bin folder or reference it in property &#039;server.rmi.ssl.keystore.file&#039;\n<\/pre><\/div>\n\n\n<p>Next, we need to copy this file in the bin directory of each remote server, so they can securely connect together with controller server.<\/p>\n\n\n\n<p>In the same directory, I create a file named <code>setenv.sh<\/code> with following content:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nexport HEAP=&quot;-Xms6g -Xmx6g&quot;\nexport JVM_ARGS=&quot;-Dnashorn.args=--no-deprecation-warning&quot;\n<\/pre><\/div>\n\n\n<p>First line is to set a bigger JVM size (by default, it is only 1G). The second line is to remove a repeating warning I want to get rid of. You can create this file on each remote server.<\/p>\n\n\n\n<p>Subsequently, we are ready to start server:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n.\/jmeter-server\nCreated remote object: UnicastServerRef2 &#x5B;liveRef: &#x5B;endpoint:&#x5B;10.0.0.157:43247,SSLRMIServerSocketFactory(host=controller\/10.0.0.157, keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi),SSLRMIClientSocketFactory(keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi)](local),objID:&#x5B;2a73d097:18c3wwwbc89:-7fff, 395571412347283568]]]\n<\/pre><\/div>\n\n\n<p>One <mark class=\"has-inline-color has-luminous-vivid-orange-color\">important point<\/mark> to keep in mind is that not only does controller need to connect to remote server, but also the reverse way. Remote server needs to send back results to controller. Keep that in mind when opening ports in firewalls.<\/p>\n\n\n\n<p>At this stage, one remote server is set up. Don&#8217;t forget to set up more remote server. The more, the better \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-run-scenario\">Run Scenario<\/h2>\n\n\n\n<p>To trigger a scenario, we must run the following command from the controller server (from the <code>bin<\/code> directory):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n.\/jmeter -n -t scenario.jmx -R server-01,server-02 -j .\/test_results\/scenario.log -l .\/test_results\/scenario.jtl\n<\/pre><\/div>\n\n\n<p>Let go through the list of arguments:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>-n means that we run without graphical user interface<\/li>\n\n\n\n<li>-t is the test plan path<\/li>\n\n\n\n<li>-R list of remote servers<\/li>\n\n\n\n<li>-j is the path to the log file<\/li>\n\n\n\n<li>-l is the path to the JMeter Test Log<\/li>\n<\/ul>\n\n\n\n<p>A typical output will look like this (truncated):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nCreating summariser &amp;lt;summary&amp;gt;\nCreated the tree successfully using scenario.jmx\nConfiguring remote engine: server-01\nConfiguring remote engine: server-02\nStarting distributed test with remote engines: &#x5B;server-02, server-01] @ 2023 Dec 5 14:56:06 CET (1701784566195)\nRemote engines have been started:&#x5B;server-02, server-01]\nWaiting for possible Shutdown\/StopTestNow\/HeapDump\/ThreadDump message on port 4445\nsummary +   7954 in 00:00:24 =  334.6\/s Avg:    49 Min:     0 Max:   275 Err:     0 (0.00%) Active: 23 Started: 351 Finished: 328\nsummary +  10611 in 00:00:30 =  355.4\/s Avg:    46 Min:     0 Max:   249 Err:     0 (0.00%) Active: 26 Started: 793 Finished: 767\nsummary =  18565 in 00:00:54 =  346.1\/s Avg:    47 Min:     0 Max:   275 Err:     0 (0.00%)\nsummary +  10618 in 00:00:30 =  355.5\/s Avg:    58 Min:     0 Max:   291 Err:     0 (0.00%) Active: 26 Started: 1236 Finished: 1210\n...\nsummary = 103949 in 00:04:54 =  353.9\/s Avg:    57 Min:     0 Max: 15767 Err:     0 (0.00%)\nsummary +   2947 in 00:00:09 =  339.4\/s Avg:    53 Min:     0 Max:   266 Err:     0 (0.00%) Active: 0 Started: 4454 Finished: 4454\nsummary = 106896 in 00:05:02 =  353.5\/s Avg:    56 Min:     0 Max: 15767 Err:     0 (0.00%)\nTidying up remote @ 2023 Dec 5 15:01:08 CET (1701784868922)\n... end of run\n<\/pre><\/div>\n\n\n<p>The <code>scenario.log<\/code> contains a bit more information, but the interesting part (from performance measurement point of view) is what you have has command output above.<\/p>\n\n\n\n<p>Another <mark class=\"has-inline-color has-luminous-vivid-amber-color\">important point<\/mark> is to copy any resource you might need on distant server like, for example, csv files (ie. config element of type &#8220;<em>CSV Data Set Config<\/em>&#8220;) as JMeter does not copy it from controller to remote servers.<\/p>\n\n\n\n<p>If you don&#8217;t see the &#8220;<strong><em>summary<\/em><\/strong>&#8221; lines, your scenario is probably not running as expected. I recommend having a look at the <code>scenario.log<\/code> file on the controller as well as <code>jmeter-server.log<\/code> on the remote servers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-create-report\">Create Report<\/h2>\n\n\n\n<p>The scenario has completed, and you have a <code>scenario.jtl<\/code> file ready to be analyzed. The command to realize that is:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.\\jmeter -g scenario.jtl -o report_results\n<\/pre><\/div>\n\n\n<p>This generates an html report which gives information about response time, throughput and latency over time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-next\">What Next ?<\/h2>\n\n\n\n<p>These steps requires still many manual operation, and, in load test, you want to run many tests with different parameters. We can create an ansible playbook to do setup JMeter remote servers, controller as well as running the test itself.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A typical web application architecture with a load balancer, two application servers and a database looks like this: If you run a JMeter, or any load test tool, from one unique server or workstation, the load balancer will most likely route all traffic to only one of the application servers. Why is that? Mainly because [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[950,2880],"type_dbi":[],"class_list":["post-29671","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","tag-jmeter","tag-loadtest"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>JMeter Remote Testing - dbi Blog<\/title>\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.dbi-services.com\/blog\/jmeter-remote-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JMeter Remote Testing\" \/>\n<meta property=\"og:description\" content=\"A typical web application architecture with a load balancer, two application servers and a database looks like this: If you run a JMeter, or any load test tool, from one unique server or workstation, the load balancer will most likely route all traffic to only one of the application servers. Why is that? Mainly because [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-05T16:37:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-11T08:16:03+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"JMeter Remote Testing\",\"datePublished\":\"2023-12-05T16:37:14+00:00\",\"dateModified\":\"2024-09-11T08:16:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/\"},\"wordCount\":602,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/12\\\/2023-12-05-16_23_00-Excalidraw.png\",\"keywords\":[\"JMeter\",\"LoadTest\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/\",\"name\":\"JMeter Remote Testing - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/12\\\/2023-12-05-16_23_00-Excalidraw.png\",\"datePublished\":\"2023-12-05T16:37:14+00:00\",\"dateModified\":\"2024-09-11T08:16:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/12\\\/2023-12-05-16_23_00-Excalidraw.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2023\\\/12\\\/2023-12-05-16_23_00-Excalidraw.png\",\"width\":739,\"height\":249},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/jmeter-remote-testing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JMeter Remote Testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/middleware-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JMeter Remote Testing - dbi Blog","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.dbi-services.com\/blog\/jmeter-remote-testing\/","og_locale":"en_US","og_type":"article","og_title":"JMeter Remote Testing","og_description":"A typical web application architecture with a load balancer, two application servers and a database looks like this: If you run a JMeter, or any load test tool, from one unique server or workstation, the load balancer will most likely route all traffic to only one of the application servers. Why is that? Mainly because [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/","og_site_name":"dbi Blog","article_published_time":"2023-12-05T16:37:14+00:00","article_modified_time":"2024-09-11T08:16:03+00:00","og_image":[{"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png","type":"","width":"","height":""}],"author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"JMeter Remote Testing","datePublished":"2023-12-05T16:37:14+00:00","dateModified":"2024-09-11T08:16:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/"},"wordCount":602,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#primaryimage"},"thumbnailUrl":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png","keywords":["JMeter","LoadTest"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/","url":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/","name":"JMeter Remote Testing - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#primaryimage"},"thumbnailUrl":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png","datePublished":"2023-12-05T16:37:14+00:00","dateModified":"2024-09-11T08:16:03+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/12\/2023-12-05-16_23_00-Excalidraw.png","width":739,"height":249},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/jmeter-remote-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JMeter Remote Testing"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=29671"}],"version-history":[{"count":10,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29671\/revisions"}],"predecessor-version":[{"id":29682,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29671\/revisions\/29682"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=29671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=29671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=29671"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=29671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}