-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance affected by Config Elements #5875
Comments
Well, to get a real insight, look at the source :) |
Frankly speaking, I do not understand the reason to have Apparently, the default implementation in Of course, it takes time to walk over those 240 properties to reset them. |
The allocation profling shows we allocate a lot of strings when concatenating property names in
Another interesting case is
I think we should just replace it with |
Another finding is that we instantiate a new
I'm not sure we really need that map. |
let me also provide more insight on the use case. I am using custom plugins where the config elements are rather large (this is the reason why in the replicate script I have put so many HTTP headers). When I run the load tests with these custom plugins, I am seeing high CPU usage and severe performance limitations, especially when the number of threads is more than 150 Moreover, with the script I have provided, I see performance degraded 10 times on my laptop if I have only 5 threads
Would really appreciate support. |
Do you know if the plugin uses a |
I agree it would make sense to profile the case with custom plugins, then you could figure out the key bottlenecks. |
our development has told me that we are not using CollectionProperty but StringProperty. Also, with the replicate script already provided (standard config/sampler), I am noticing the CPU is very high when the config element is enabled, even if the throughput is much lower - first part is element enabled, second part is with it disabled. as if JMeter is doing something extra for each sampler executed due to the config element being enabled |
The CPU load does not clarify much. I would suggest profiling at method level |
profiling with our custom plugins is not really relevant - I think if you find the issue/fix it for the large config elements with the replicate script I had provided, it will fix also our issue. something is happening in Jmeter that consumes a lot of CPU when there is a large config element and multiple threads - performance is severely affected. As if it's reloaded with each sampler executed. reducing to the minimum the config element in my case led to improved results - but still CPU is much higher than expected. would appreciate support - we have use cases where we need to reach 50k+ TPS and I am bit stuck. |
That might be true (and I suspect it is), but it would be even better to see those values in a chart. If you want to hide your company name, pixelate it. |
it's not about company name - R&D does feel comfortable sharing these profiling when we run with our plugins. they say - and I agree - that the same issue happens with the Replicate script I had provided - so that can be used for investigations |
Do you think you could share the files in private? For instance, as I run |
you get 315k/sec with the config element enabled or disabled? can you run a comparison test and also look at the CPU on your laptop? |
I run with header manager enabled. Header manager on: 315K |
I am getting similar results - I have M1 with 16GB.
It's a dummy test that shows something is happening probably at each
request due to that Config element.
…On Fri, 5 May 2023 at 19:30, Vladimir Sitnikov ***@***.***> wrote:
I run with header manager enabled.
I have Apple M1 Max, Java 11.0.13.
Header manager on: 315K
Header manager off: 830K
—
Reply to this email directly, view it on GitHub
<#5875 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AHXCOSXRBRMIUC2HR74RLR3XEUTKDANCNFSM6AAAAAAXUO5VTU>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
On my machine setup (Dell XPS 13 (i7-8550U), Java 1.8) I get 180K with Header manager. |
in my view it's not relevant to share this information as the case reproduces with JMeter standard samplers. would appreciate support - in our case, the more threads we have the worse the performance :( |
@octaviand2 , Pull requests that resolve the issue are welcome |
apparently this is a huge bottleneck for us - our config elements have 300+ properties and the performance is severely limited by these iterations. Any clue on the functional reasoning for it - can it be disabled by some configuration? |
You can override |
One of the immediate actions I suggest is that we skip In other words, if an element is safe for concurrent calls, then |
…ts that are shared between threads (the ones that implement NoThreadClone See apache#5875
…ts that are shared between threads (the ones that implement NoThreadClone See apache#5875
…aders: skip reinitialization on each iteration AbstractTestElement#recoverRunningVersion resets all the properties on each iteration, and it is used for loop-like elements mostly. However, HTTP HeaderManager does not modify its state during the execution, so there's no need to reset its state. See also apache#5875 (comment)
…aders: skip reinitialization on each iteration AbstractTestElement#recoverRunningVersion resets all the properties on each iteration, and it is used for loop-like elements mostly. However, HTTP HeaderManager does not modify its state during the execution, so there's no need to reset its state. See also apache#5875 (comment)
I've added Thanks for providing the test case. Rampup 0 (e.g. to make all the threads produce load faster)
|
Expected behavior
I am expecting that JMeter performance is not affected by Config Elements when using 100 threads (min)
Actual behavior
When my jmx has config elements - large in size - performance is significantly affected.
I need to understand if this is normal or not - would appreciate insights on how jmeter works.
Perhaps this is a memmory issue?
Steps to reproduce the problem
I am attaching a simplified jmx that can be used.
If the HTTP header manager is enabled, performance is reduced by 75%
Replicate.jmx.zip
JMeter Version
5.5
Java Version
java version "9.0.4"
OS Version
macos
The text was updated successfully, but these errors were encountered: