Hello Team,
We have noticed a major contention in JMeter that becomes a major problem
at high scale.
The issue is related to the PrintWriter in ResultCollector.
In tests with high throughput (> 100 req/s), the lock taken by
PrintWriter#println() will lead many threads to block waiting for the lock
to be released (even with the underlying buffer).

We implemented a fix based on LMAX-Disruptor library:

   - https://github.com/LMAX-Exchange/disruptor


You can review the current PR on our repository and give your feedback for
the upcoming PR:

   - https://github.com/ubikloadpack/jmeter/pull/61/files?w=1

You'll find in the PR and ODS document showing some results.
The best ones made with dev/test.jmx being :

*BlockingWaitStrategy*
*Threads \ Ring buffer size* *0* *1024* *65536* *131072* *262144*
*524288* *Max.
gain*
*90* 131580918 144970934 161682916 178337178 N/A N/A 35.53 %
*500* 129404418 8589281 186455414 183922157 N/A N/A 44.09 %
*3000* 125778729 23311727 11658406 25689004 174138609 174434147 38.68 %

Please note it is critical to disable the Summariser during the test as it
degrades throughput (we'll provide a future patch for this), using:

   - -Jsummariser.name=


-- 

Regards
Florent, Philippe and Benoit from
Ubik Load Pack <http://ubikloadpack.com> Team
Follow us on Twitter <http://twitter.com/ubikloadpack>
Read our blog <https://www.ubik-ingenierie.com/blog>

Reply via email to