-
I realized that when keyandthink is flagged and async_clients are used, there is a huge difference in performance between MSSQL and Oracle database. (same VU and driver settings) For MSSQL, when the benchmark starts running all the async_clients get into the database respecting the async_delay given in the script while for Oracle it seems like there is a delay and so the clients take much much longer to connect. (approx 2 connections per second) Being more specific it looks like the 'promise' package withing the 'switch' code section behaves differently when Oracle is selected as a target introducing a delay which results in a not-consistent test as the clients connect to the DB not following the async_delay setting. I troubleshooted this issue and figured out it is not related to network latency, oracle client version or database parameters. However, I created a custom script where the 'switch' section was left out so only the promise package was making the async connections and in this scenario i haven't noticed any delay. The clients connect to the database following the async delay setting as expected. I also tried to move out from the switch section all the procedures and leave just the TPC-C code execution but it didn't make any difference. I have attached the scripts to reproduce the issue. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
Many thanks for the question. So I have done some verification/troubleshooting comparing Oracle and SQL Server below for the asynchronous connections with the findings as below. At the outset as TPROC-C is derived from TPC-C when running with asynchronous clients the expected performance should be similar to what is defined in the TPC-C specification as this uses keying and thinking time with TPROC-C set to the same key and think values. So from the specification, we have 10 virtual users per warehouse (For each active warehouse in the database, the SUT must accept requests for transactions from a population of 10 terminals.) and per warehouse 9-12.86 tpmC - so as a rough guideline for TPROC-C we should be expecting 'around' 1 NOPM per asynchronous connection. So as a first test I configured both Oracle and SQL Server on the same PC (using Virtual Box for Oracle) and ran 1 Virtual User with 10 asynchronous clients - this should give 'around' 1 NOPM per client (or more accurate in the 9-13 range). as below this is what I saw.
Doubling the number of asynchronous clients also gives us consistent results within expectations as follows
I've seen results with 10,000 connections delivering around 10,000 NOPM, so the results are also consistent in a server environment. Doing a diff on the attached files the async delay is different and is set to 1 and 30 - note that this is in milliseconds, so 1 second would be 1000 and 30 seconds 30000. It could therefore be possible that there is a login storm taking place and somewhere in the Oracle configuration it is throttling the connections. By default, as above in the logs each asynchronous client will wait for a second before attempting to login after the previous one. For the diff between the files removes the switch statement, the first part that has been removed is for the monitor virtual user so this one does the timing, however this is the only one that uses the system connection so it could be possible that there is an error using higher privileges. To troubleshoot further I would suggest using the steps as above (Its the same in the GUI and/or CLI) to see if the throughput is expected for 1 virtual users with 10 then 20 asynchronous clients with a minimum of 1000 async delay (this is not fixed just in case you want to test a login storm) and logging the output. If this is not as expected we can investigate further. In particular the scripts are edited inline when selecting options such as use all warehouses and asynchronous so we can't rule out a clash between some of these options but firstly if you follow the steps above we can take it from there. |
Beta Was this translation helpful? Give feedback.
Many thanks for the question. So I have done some verification/troubleshooting comparing Oracle and SQL Server below for the asynchronous connections with the findings as below.
At the outset as TPROC-C is derived from TPC-C when running with asynchronous clients the expected performance should be similar to what is defined in the TPC-C specification as this uses keying and thinking time with TPROC-C set to the same key and think values. So from the specification, we have 10 virtual users per warehouse (For each active warehouse in the database, the SUT must accept requests for transactions from a population of 10 terminals.) and per warehouse 9-12.86 tpmC - so as a rough guideline for TP…