Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Any one successful in using Jmeter for Load testing?

I tried NTLM authentication ,it is of no use because each session is killed by new simulated user.

I also tried Custom authentication as per the Scalability document by implementing IIS and it didn't work either.

(Access point page is not loading after replacing the Authentication.aspx  file )

Has anyone get the Scalabilty tool working?If yes, which type of authentication you used?

43 Replies
Anonymous
Not applicable
Author

If you want a step wise approach followQV Scalability Tools (QV10,QV11) .If you are already following that material then post the error that is stopping you.

Not applicable
Author

Hi ,

I am not using QVScalability tools , instead using Jmeter 2.12 directly to record scripts. Jmeter runs in a machine in same Client network. The qlik server uses NTLM authentication, NTFS mode  in my project.Scripts are successfully created in Jmeter ( used HTTP authorization manager to feed username/password )

Requirement is to test with 100 concurrent users from Jmeter. But I am getting error messages in logs "Killed because Named User Cal was needed from another client" when trying to simulate more than 1 virtual user from Jmeter.

Could anyone advise how to eliminate this error during Performance Testing?

I tried enabling Header authentication in Qlik servers but then Jmeter scripts fails with Authentication error ( as Jmeter uses NTLM by default). Any quick help to solve this is highly appreciated !!

Thanks,

Sarah

Sebastian_Fredenberg

Hi,

The error you get indicate that your simulated users conflict with each other. By default, the user simulated will be the same as the one running the tool - and that will apply for all simulated users. Named user cals do not allow the same user in several  sessions - to do so you need session cals.

To be able to simulate several users at once we recomend setting up the environment with DMS mode and header authentication. It is not enough to only change the environment, you also need to instruct jmeter to send in users with header.

In either case, if you use your own solution there are a lot of things to consider - you need to modify your recorded script in order to accomodate for the communication. In particular, the id:s of your objects in your application will not be static but dynamically assigned when each user opens the document. As such, it is likely that your recorded id:s do not apply any more.

If you later want to anlayze the results of your test, the analyzer application we use are tailored to match the output of the tools and the specific performance counters.Due to this, we recomend that the tools are used as then all of this will be handled. Is there a reason for not using these?

/sebastian

Not applicable
Author

Hi Sebastian,

Thanks for your quick feedback!

1. I am handling the dynamic values and poll requests in the Jmeter script using Xpath extracters , bean shell post processors, poll loops etc.

2. For analysis and monitoring , we are making use of Jmeter listeners ,Windows perfmon counters and also governance dashboard at times

3. For CAL issues,

I tried enabling header authentication in QMC , but I am not sure how to modify Jmeter to take header authentications ( as Jmeter by default takes NTLM auth) . Any help around this ?

Whenever I try to switch NTFS to DMS , reports seems unavailable in the UI .

Also tried activating Anonymous login to domain, then also reports seem to be unavailable in UI . Ours is an intranet application for Client

Sebastian_Fredenberg

Hello,

To enable header authentication in jmeter you need to a HTTP Header Manager in your test plan. The name of the header should be as in the QMC (for example QVUSER). If you want to simulate more than one user then the value need to differ for the users, an easy way of doing this is to read the headernames from a file. To do so, add a CSV Data Set Config to your testplan - specify the path to a textfile with headernames on each row for example. Set a name for the variable that the headername should be stored in - for example HEADER. Then, in your HTTP Header Manager, set the value of the header to your defined variable (in this case it would be ${HEADER}. )

I hope that helps, this is more or less how the scalability tools handle it.

/sebastian

Not applicable
Author

Hi Sebastian,

Thanks for the input.

I tried enabling header authentication and adding header manger in Jmeter with name QVUSER and value as anonymous. It does not work. Do we need to specify usernames in QMC or somewhere in server?

Your help is really appreciated as we are kind of stuck in this issue.

My application takes authorized users only . Whenever I switch to header authentication or DMS mode or allow anonymous in QMC, my application does not show up reports as expected. Client requirement is NTLM authentication. Is there any way we can avoid the user cal violation with NTLM setting ON?

Thanks & Regards,

Linu Sarah

Sebastian_Fredenberg

Hi,

A simulation cannot circumvent the rules of the communication flow, it adhers to the same rules as a regular user. That means that you must ensure authentication, authorization and licencing.

Authentication and licencing play according to certain rules and the challenge is to maximize outcome within these rules.

Authorization is set in the meta-file accompanying the qvw. It's either "All Users", "All Authenticated" or "Named Users". Depending on setup you can have an authenticated user that does not have access to the qvw. We recommend using All Authenticated.

When using the simulation tool, all simulated users will origin from the same NTLM account that runs jmeter (but different sessionids) - that means that the only license you can use with NTLM is session CAL, and each simulated user will consume one session CAL. Session CAL allow for one user to have many concurrent sessions with different sessionids. Named CALs will not work in this case as they don't allow this. Switching to header authentication will allow for Named CALs to be consumed as each session will be unique to each headeruser.

Now, if you want use header the value you input needs to be unique per each user, so setting the value as anonymous will just be interpretated as any other headername. As soon as two or more virtual users are simulated with that they will conflict with each other. The easiest way is to have a text file with unique headernames as input for the value of the header.

When switching to header authentication you are not actually authenticating the users. In a real setup you need to have someone to perform the actual authentication. QlikView will "trust" the authentication authority. In a NTLM setup the authority is Windows and with header authentication it is the entity responsible for setting the header value. In a JMeter simulation that would normally be a text file with usernames.

That's what I can think of from the top of my head right now, but there could be more things that needs to be handled in your script if you recorded it without using the scalability tools. That is why we recommend using the tools with correct protocol adherence to run the tests.

/sebastian

Not applicable
Author

Hi,

We have limitations in installing .Net or exe files of scalability tools in clients machine. We have taken care of all steps

mentioned in document from this community Script recording and load testing of Qlikview version 10 with JMeter - PA5.doc for script development.

My project do not have Session CALS unfortunately. We only have Named CALS

You said : "Now, if you want use header the value you input needs to be unique per each user, so setting the value as anonymous will just be interpretated as any other headername"

I did not understand it fully . I added header manager with a name QVUSER and its 'value' as 'anonymous' (or user1 ) and even for 1 iteration script fails. I can point the 'value' to a text file with values but I would like to know if any usernames (ex: user1,user2 etc ) will work or not ?

Sebastian_Fredenberg

Hello,

No there are no specific headernames that does not work, but each headername must be unique for each simulated user. First of all I recommend you to look in the event log why your simulated users are not getting in. It is also always a good idea to try this manually by using headers in a browser - for example with Fiddler or the plugin Modify Header  for chrome. If you cannot get in manually browser then the tool will definitely not work, but if it works manually and not with the tool it can be a script error - so look in the jmeter result tree and the event logs.

As for the tool, note that the script recording document for QV10 is quite old and is now replaced with the scalability tools to create the jmx. I understand that there might be limitations in setting up the tool in their environment - but you can always create the jmx script using the scalability tools on any machine and then simply move it to the client environment when ready to run it.

/sebastian

Not applicable
Author

Hi,

The scalability tools are good and saves effort , totally agreeing .But  I don't think it aids in running a test with all reports (~ 30 reports in my application)  running in parallel. If so also , then it is too late as we already have generated all scripts and are in execution phase.

Our concern is the CAL violation  messages in event logs which says :" 2016-02-12 06:58:45 2016-02-15 09:58:44 4 700 Information CAL usage: Named CAL "domain\username" was in use on another client - killed"

We have already reached out to Qlik support for this and the explanation is : Qlik expects 1 user per machine and hence multiple user sessions from Jmeter cause sessions being spawned and when a new user thread finds that there is no unused cal , it tries disconnecting any one of previous sessions. Specifically my question is : With known limitations ,such as limited named CALs, only 1 machine to generate multi-user load ,only NTLM/header auth permitted, testing environment shared with multiple teams , Is there any way we can avoid this error ? Sorry if my demand is too skeptical but please let me know if it is possible or not at least.

-Sarah