Server Performance Testing
  • 20 Aug 2024
  • 3 Minutes to read
  • Dark
    Light

Server Performance Testing

  • Dark
    Light

Article summary

API Tests

The following section provides information on general server performance when a large volume of requests are being made to a Decisions environment. The number of active cores was limited for each test, providing a comparable value for performance load.

The total throughput is calculated by averaging the number of requests processed over a 5-minute interval from both servers. The results are then used to determine a rough estimate for the average throughput over an hour. 

Testing Server Specifications

Below is a diagram setup used for testing. Three testing servers were used, with one containing Decisions and the remaining servers using JMeter to send requests to the Decisions environment. The three environments are located on the same network.

This setup is used for the Rule Engine and Flow API execution tests, and hardware-software specifications are included below.

Server NameServer TypeOperating SystemPhysical MemoryProcessorCore Count
DecisionsDecisionsMicrosoft Windows Server 2019 Standard48 GBIntel(R) Core(TM) i7-9700
CPU @ 3.00GHz
8 Cores, 8 Logical Processors
JMeter Test 1JMeterMicrosoft Windows Server 2022
Standard
32 GBIntel(R) Core(TM) i9-9900K
CPU @ 3.60GHz
4 Cores, 8 Logical Processors
JMeter Test 2JMeterMicrosoft Windows Server 2019 Standard16 GBIntel(R) Core(TM) i7-7700
CPU @ 3.60GHz
4 Cores, 8 Logical Processors



Rules

The following tests the performance of the Rule Engine, where a Rule was called multiple times as an API service

Single Phrase Rule

A simple Rule was created for this test where two integer values were compared. Below is the average number of executions within the 5-minute interval.

Core NumberAverage Throughput/sec Average Throughput/hour
8 Cores16,490.7/s59,366,520/hr
4 Cores11,983.6/s43,140,960/hr
2 Cores6,786.8/s24,431,760/hr
1 Core3,682.3/s13,256,280/hr

Twenty Phrase Rule

For this test, a Rule was created with 20 conditions to simulate a complex Rule. The Rule accepts two integer values as an input and outputs either True or False.

Core NumberAverage Throughput/sec Average Throughput/hour
8 Cores16,444.3/s59,199,480/hr
4 Cores12,345/s44,442,000/hr
2 Cores6,770.4/s24,373,440/hr
1 Core3,688.7/s13,279,320/hr



Flows

Four scenarios were used to test performance when a Flow is called an API Service. These methods represent how steps calling the database and the number of steps can affect the average throughput for a process.

Empty Flow

This test case contains a Flow with only the Start and End steps connected.

Core NumberAverage Throughput/secAverage Throughput/hour
8 Cores15,015.6/s54,056,160/hr
4 Cores10,469.4/s37,689,840/hr
2 Cores5,492/s19,771,200/hr
1 Cores2,897.3/s10,430,280/hr

Ten Step Flow

This test case contains a Flow that has 10 Add steps along with accepting a numerical input.

Core NumberAverage Throughput/secAverage Throughput/hour
8 Cores12,721.4/s45,797,040/hr
4 Cores7,705.6/s27,740,160/hr
2 Cores4,002.7/s14,409,720/hr
1 Cores2,168.5/s7,806,600/hr

DB Step Flow

The following test case uses a preconfigured step that queries the database and returns a result. The table contained 10,000 records.

Core NumberAverage Throughput/secAverage Throughput/hour
8 Cores48.24/s173,664/hr
4 Cores30.5/s109,800/hr
2 Cores17/s61,200/hr
1 Cores8.9/s32,040/hr

Cached DB Step Flow

The following test case uses the same step from the previous use case but instead utilizes the cache. The cache was configured to record outcomes on a per user basis and to remain available for 30 minutes.

Core NumberAverage Throughput/secAverage Throughput/hour
8 Cores90.5/s325,800/hr
4 Cores87.2/s313,920/hr
2 Cores86.9/s312,840/hr
1 Cores70.7/s254,520/hr



Database Integration Latency Tests

The following section covers the average execution time between Decisions and a database. Included with the test was a connection table integration to a remote SQL database. Two scenarios were used, one representing a low latency configuration and another depicting a high latency configuration. 

These tests use a Flow that contains either the Insert, Update, Bulk Insert, and Get by ID(Email) steps. The Flow is iterated a set number of times, with the start and end times recorded and used to determine the total execution time of the process.  

Below is the specification for the SQL Server databases used for this test.

Server NameSQL Server VersionWindows VersionDB SizeSpace Available
Decisions ServerSQL Server Management Studio - 15.0.1838410.0.1776310064.00 MB2312.03 MB
Remote SQL DatabaseSQL Server Management Studio - 15.0.1838010.0.203483024.00 MB1987.84 MB

Low Latency Environment Setup

The following diagram represents the environment configuration used to test a low latency environment. Connections between the Decisions Server and a remote database server are established over an ethernet connection to the same network.

Low Latency Results (Local)

Insert

Total Count of RowsStart TimeEnd TimeTotal Execution Time
10011:57:3111:57:310:00:00
100012:48:5312:48:540:00:01
1000012:49:4112:49:490:00:08
10000012:50:2612:51:540:01:28
10000001:01:251:15:390:14:14

Update

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1007:01:017:01:010:00:00
10007:01:437:01:440:00:01
100007:02:517:03:000:00:09
1000007:08:307:10:090:01:39
10000007:34:067:50:490:16:43

Bulk Insert

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1001:41:171:41:170:00:00
10001:42:021:42:020:00:00
100001:43:061:43:060:00:00
1000001:43:421:43:430:00:01
10000001:44:211:44:370:00:16

Get by ID (Email)

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1001:54:021:54:020:00:00
10001:54:381:54:380:00:00
100001:55:231:55:230:00:00
1000001:55:581:55:590:00:01
10000001:55:181:53:250:00:07



Low Latency Results (Remote)

Insert

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
10011:51:3411:51:340:00:00
100011:55:1011:55:110:00:01
1000011:56:5411:57:030:00:09
10000011:58:4012:00:130:01:33
100000012:24:3412:39:210:14:47

Update

Total Count of Rows in the Database
Start TimeEnd TimeTotal Execution Time
10011:53:3211:53:320:00:00
100011:55:4611:55:470:00:00
1000011:57:3711:57:480:00:00
10000012:18:3512:12:130:00:02
100000012:58:3713:15:300:00:17

Bulk Insert

Total Count of Rows in the Database
Start TimeEnd TimeTotal Execution Time
10012:51:1212:51:120:00:00
100012:56:4012:56:400:00:00
1000012:58:2712:58:270:00:00
10000012:59:5312:59:550:00:02
10000001:01:241:01:410:00:17

Get by ID (Email)

Total Count of Rows in the Database
Start TimeEnd TimeTotal Execution Time
10012:55:5812:55:580:00:00
100012:57:0512:57:050:00:00
1000012:58:4112:58:410:00:00
1000001:00:191:00:190:00:00
10000001:02:111:02:170:00:06



High Latency Environment Setup

For this scenario, the connection between the Decisions server and remote SQL database is established wirelessly. This was used to simulate having the remote database in a separate physical location.

High Latency Results

Insert

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1001:05:561:05:570:00:01
10001:07:421:07:430:00:01
100001:08:571:09:110:00:14
1000001:14:391:16:200:01:41
10000001:20:041:37:300:17:26

Update

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1001:07:001:07:000:00:00
10001:08:161:08:170:00:01
100001:10:411:10:560:00:15
1000001:17:071:18:560:01:49
10000001:38:531:57:400:18:47

Bulk Insert

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1002:00:352:00:350:00:00
10002:01:502:01:510:00:01
100002:02:592:02:590:00:00
1000002:04:102:04:110:00:01
10000002:05:352:05:510:00:16

Get by ID (Email)

Total Count of Rows
Start TimeEnd TimeTotal Execution Time
1002:01:002:01:010:00:01
10002:02:122:02:120:00:00
100002:03:052:03:050:00:00
1000002:04:152:04:160:00:01
10000002:06:002:06:070:00:007



Was this article helpful?