The information in this Article has since been published in the OpenEdge Documentation:
Progress Application Server for OpenEdge: Machine Sizing Guide, Overview - Performance Tuning Basics
https://docs.progress.com/bundle/pas-for-oe-sizing/page/Performance-Tuning-Basics.html
Manage Progress Application Server (PAS) for OpenEdge - Tune PAS for OpenEdge instances
https://docs.progress.com/bundle/pas-for-openedge-management/page/Tune-PAS-for-OpenEdge-instances.html
Performance Tuning Basics
There are only four bottlenecks possible in any application environment. They are CPU, Memory, Disk I/O and Network. There can be several reasons why any of these bottlenecks can occur, but finding the bottleneck and relieving it, and doing this repetitively, is the only way to properly size or tune your application.
The point is to find the bottleneck in these four areas by looking at the symptoms, alleviate the cause, by making only ONE change at a time. Then run your test again to see how your change worked. Then find the next bottleneck.
Examples:
CPU
Symptoms
- High Load - number equals number of CPUs
- 0% idle time
Causes
Memory
Symptoms
- 0% memory available
- swap space being used
Causes
Application Infrastructure
Since this test is to size your PASOE instance, the test needs to be run on three different machines.
- Your client machine or test harness.
- Your PASOE instance and application.
- Your Database.
You can use this data later to scale your application if PASOE and the database are on the same machine. However, trying to size your PASOE application with the database running on the same machine would introduce too many variables.
Testing Environment
What is your test harness?
- Will you be running JMeter to drive your web application?
- Will you be using Load Runner?
It doesn't matter what the test harness of choice is used, but remember a few points:
- The test machine always needs to have excess CPU, Memory and Network capabilities.
- Make sure you add some "think time". Real Applications never have all requests running immediately after the response. For example, we ran our tests with a 1 to 3 second random think time interval.
- The test harness must gather roundtrip (a.k.a. elapsed times) metrics
- The test harness must gather and reports errors.
Monitoring Tools
Monitoring tools are essential for running your sizing or performance tests. They must be reliable, consistent and run in the background. The data must be archived while being run.
Monitoring tools used in our sizing tests:
- Top - linux system performance monitoring tool
- OE Manager REST API - PASOE monitoring tool
- JMeter - not only the test harness but also to monitor responses for elapsed time and error reporting
Knowledge of PASOE Tuning Parameters
There are many parameters available for tuning PASOE, you only need to know a few for most tuning situations, at least for baseline initial runs.
Tomcat Maximum Simultaneous Connections (defaults to 300)
- Run this to get the current value -> tcman config psc.as.executor.maxthreads
- Run this to change the value -> tcman config psc.as.executor.maxthreads=<new value>
In openedge.properties:
Maximum Agents
Maximum Concurrent Connections per Agent
- maxConnectionsPerAgent=16
Maximum ABL Sessions per Agent
- maxABLSessionsPerAgent=200
Agents at Startup
The "defaults" will always be wrong, expect to change them until you get them correct for your application and expected load.
Let's change the openedge.properties for the first test. Note: The first run should be small enough to be sure you don't encounter any bottlenecks. What we are looking for is a baseline, your best expected roundtrip time.
- The Tomcat Maximum Simultaneous Connections should be okay at 300.
- Set the maxAgents=1 (we want to run all the tests with 1 Multi-Session-Agent (_mproapsv) running multiple Sessions).
- Set the maxConnectionsPerAgent=50 (this should be more than needed for the baseline).
The Sizing/Performance Process
- Start your database on a machine big enough to handle the requests.
- Start the PASOE instance with the values above and connecting to the database at startup.
- Start scripts to gather system information (top) and PASOE information (OEManager REST API). Example scripts are provided in the Appendix to this Article.
- Start your test harness running a small concurrent user count (example: 10).
- Verify best performance.
- Save all information.
- Increase concurrent user load, and maxConnectionsPerAgent, incrementally.
- When you get to 300 concurrent clients increase the Tomcat maxthread values.
- Keep maxthreads and maxConnectionsPerAgent values the same and keep 1 maxAgent.
- Increase until roundtrip time starts to fall.
- Analyze your bottleneck.
- Correct bottleneck (if CPU 100% or Memory 100% increase machine size).
- Repeat until you are satisfied.
The following Article provides an example of hardware sizing for PASOE to handle up to 500 concurrent client clients load using the ATM Benchmark and JMeter: