[SOL-193] JMeter connection Created: 06.11.2014 Updated: 24.08.2020 Resolved: 24.07.2020
|Component/s:||3rd Party Tools, EXASolution, JDBC|
|Affects Version/s:||EXASOL 6.0.0|
|Reporter:||Captain EXASOL||Assignee:||Captain EXASOL|
|Attachments:||0_Test Plan Window - cut.png 0_Test Plan Window.png 10_Generate Summary Results.png 11_WorkBench.png 1_Test Plan Node.png 2_JDBC Connection Node.png 3_Setup Thread Group Node.png 4_JDBC Request Setup Node.png 5_Thread Group Node.png 6_JDBC Request Run Node.png 7_View Results Tree - request.png 7_View Results Tree - response data.png 7_View Results Tree - sampler result.png 7_View Results Tree.png 8_Summary Report.png 9_Aggregate Report.png template.jmx|
This is deprecated and will be replaced by https://github.com/exasol/exameter. We provide this documentation for archival purposes and to be useful to those running older versions. There will not be any modifications, enhancements or updates to the "Affected Version/s" textbox.
You have an EXASolution database and want to test its concurrency behaviour for a new project, in a proof of concept or any other reason. This article has been written for JMeter 3.2.
A very common tool for emulating expected concurrency behavior on IT infrastructure is JMeter (http://jmeter.apache.org). It allows you to define your test plans in a GUI and to run them from the GUI or command line.
In this tutorial, we would like to show you how to configure it in order to use it with an EXASOL database.
In practice, you might face the following challenges:
Step 1. Create a test Plan (take template.jmx as template)
To define them, properties can be read. For example, the following
means: If the property "concurrency" exists, set the variable "concurrency" to the value of that property. If the property "concurrency" is not defined, set the variable "concurrency" to the value "10". Please note that properties and values are different things, and the identical names, in this case, are just for convenience.
starts JMeter in non-GUI mode and runs the test plan "template.jmx" with the properties "concurrency" and "iterations" set to its respective values.
If you create more than one Thread Group, the switch "Run Thread Groups consecutively" becomes important. If checked, they run consecutively - if not checked, thread groups run in parallel. Beware that "setUp Thread Group" elements are always executed before the "Thread Group" elements, regardless of the switch.
Finally, you need to define the location of "exajdbc.jar". You can download the JDBC driver from our website: https://www.exasol.com/portal/display/DOWNLOAD/
The variable name is important, as you need to refer to it in a later step ("exa_benchmark" in this case). The max number of connections is set to the value of the "concurrency" variable. You can leave the defaults for "Max Wait" and "Time Between Eviction Runs". Ideally, you set "Auto Commit" to "True". As EXASOL only supports the option "SERIALIZABLE" for "Transaction Isolation", you can leave this setting to "DEFAULT". A connection validation is normally not necessary.
For the database URL, you configure the connection string with "jdbc:exa:"prefix. If you work with a cluster, use a connection string with an ip range that covers all the active and hot-standby database nodes, e.g.: "10.0.0.1..5:8563" for a cluster consisting of 5 database nodes in total (and respective ip addresses).
Any further JDBC properties can be added using semicolons. Especially setting the client name and/or client version can make sense to identify queries of a specific test run later on using the auditing tables. In the example above, the "test_id" variable is used, which is generated from the startup time of JMeter in date/time format and the start time of the test in UNIX timestamp format - for example "20170926180920_1506443755443" (JMeter started on September 26, 2017, at 18:09:20).
Note that the test start time is in Unix timestamp format and can be different from the JMeter startup time if you run multiple tests from the GUI without closing JMeter in between. Set the "JDBC driver class" to the value shown above and set user/password to appropriate values (default is sys/exasol).
|Category 1:||3rd Party Tools|
|Category 2:||Clients, Interfaces & Drivers - JDBC|
|Comment by Franz Schwab [ 22.06.2020 ]|
it is not yet public.