pmouawad opened a new pull request #602:
URL: https://github.com/apache/jmeter/pull/602
Hello Team,
As reported in PR 601, 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 buffering).
Following review done by JMeter team (Thanks Felix and Vladimir), we noticed
important performance enhancement and more stable results using
ArrayBlockingQueue on different computers (compared to using LMAX-Disruptor).
The tests done with JCTools were not conclusive on our side.
The problem with RB and JCTools is always in our tests when the storage
becomes full.
Results with ArrayBlockingQueue show more stability.
We notice an increase by 69% of the throughput of this:
`
jmeter -n -t test_bug_64558.jmx -Jjmeter.save.queue.size=524288
-Jthreads=2000 -Jduration=120 -Jrampup=10 -Jsummariser.name= -l
results_buffer_256k_q524288.csv
`
vs this one JMeter 5.3:
`
jmeter -n -t test_bug_64558.jmx -Jthreads=2000 -Jduration=120 -Jrampup=10
-Jsummariser.name= -l results.csv
`
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=
[test_bug_64558.jmx.txt](https://github.com/apache/jmeter/files/4840938/test_bug_64558.jmx.txt)
Implementation does the following:
- Introduce a configurable buffer for output CSV/XML file
(property:jmeter.save.saveservice.buffer) => This alone improves slightly
performance
- Cache properties that are highly requested : Thread Group name, isSuccess,
IsError , filename
- Introduce an ArrayBlockingQueue and make Sampler use it when saving
SampleEvent and a thread that will read the queue and write
Contributed by UbikLoadPack Team:
Florent
Benoit
Philippe
Website: https://ubikloadpack.com
Twitter: @ubikloadpack
Files:
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]