<p>I am running load test of 24 hours using Jmeter in Azure Kubernetes service. I am using Throughput shaping timer in my jmx file. No listener is added as part of jmx file.
My test stopped abruptly after 6 or 7 hrs.</p>
<p>jmeter-server.log file under Jmeter slave pod is giving warning --&gt; <strong>WARN k.a.j.t.VariableThroughputTimer: No free threads left in worker pool</strong>.</p>
<p>Below is snapshot from jmeter-server.log file.
<a href="https://i.stack.imgur.com/Kbd7b.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Kbd7b.png" alt="enter image description here" /></a></p>
<p>Using Jmeter version - <strong>5.2.1</strong> and Kubernetes version - <strong>1.19.6</strong></p>
<p>I checked, Jmeter pods for master and slaves are continously running(no restart happened) in AKS.
I provided 2GB memory to Jmeter slave pod still load test is stopped abruptly.
I am using log analytics workspace for logging. Checked ContainerLog table not getting error.</p>
<p>Snapshot of JMX file.
Using following elements -&gt; Thread Group, Throughput Controller, Http request Sampler and Throughput Shaping Timer
<a href="https://i.stack.imgur.com/zBfL3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zBfL3.png" alt="enter image description here" /></a></p>
<p>Please suggest for same.</p>

<p>It looks like your <a href="https://jmeter-plugins.org/wiki/ThroughputShapingTimer/#Schedule-Feedback-Function" rel="nofollow noreferrer">Schedule Feedback Function</a> configuration is wrong in its last parameter</p>
<p><a href="https://i.stack.imgur.com/4vVTz.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4vVTz.png" alt="enter image description here" /></a></p>
<p>The warning means that the Throughput Shaping Timer attempts to increase the number of threads to reach/maintain the desired concurrency but it doesn't have enough threads in order to do this.</p>
<p>So either increase this <code>Spare threads ration</code> to be closer to <code>1</code> if you're using a float value for percentage or increment the absolute value in order to match the number of threads.</p>
<p>Quote from documentation:</p>
<blockquote>
<p>Example function call: ${__tstFeedback(tst-name,1,100,10)} , where &quot;tst-name&quot; is name of Throughput Shaping Timer to integrate with, 1 and 100 are starting threads and max allowed threads, <strong>10 is how many spare threads to keep in thread pool. If spare threads parameter is a float value &lt;1, then it is interpreted as a ratio relative to the current estimate of threads needed. If above 1, spare threads is interpreted as an absolute count.</strong></p>
</blockquote>
<p>More information: <a href="https://www.blazemeter.com/blog/using-jmeters-throughput-shaping-timer-plugin" rel="nofollow noreferrer">Using JMeter’s Throughput Shaping Timer Plugin</a></p>
<p>However it doesn't explain the premature termination of the test so ensure that there are no errors in jmeter/k8s logs, one of the possible reasons is that JMeter process is being terminated by <a href="https://docs.memset.com/other/linux-s-oom-process-killer" rel="nofollow noreferrer">OOMKiller</a></p>
