Troubleshooting inconsistent response timesThe following areas need to be investigated when PASOE responses are inconsistent:
- Database Tuning – Specifically options which impact available connections and network communication.
- AWS Machine Sizing – Instances should be large enough to support the Enhanced Networking Adapter.
- Network Latency - AWS Instances for the Client (PASOE) and Server (Database) should be located on the same AWS Availability Zone (AZ) with a sub-single-digit response time measured in seconds.
Once these three areas have been investigated and inconsistent respsonse times are still evident, engage Progress Professional Services to further assist with achieving a performant PASOE environment on AWS:
Contacting Progress Professional Services (PSO) Team Database Tuning Options and Processes.During quiet periods, preferably out of the business hours run the attached WebHandler class to collect metrics on your current client-server connection.
- The queries perform a “PRESELECT EACH” on several target tables using NO-LOCK, which will result in sending multiple records in each response from the database.
- Using this test, the aim is to achieve consistent results from the embedded queries, generating traffic to the database through NO-LOCK reads
- The parameters for -prefetch* and the -Mm effect network performance and will be the subject of investigation for the following process. For example, starting with a -Mm parameter of 16384, then changing the parameter (and restarting the database and PAS instance) the response time may vary. For further detail, review the following Articles:
To setup the WebHandler class for a PASOE instance:
- Deploy the file TestHandler.cls to the {CATALINA_BASE}/openedge directory.
- Add a new handler entry in the {CATALINA_BASE}conf/openedge.properties : handler#=TestHandler:/test
- Replace handler# with the next sequential number after the last available handler definition (there must be no gaps in the numeric sequence).
- Backup the current database configuration options, eg. conmgr.properties file on the database server. The database should be running with existing options tuned for the Application.
- Restart the PAS instance or stop active MSAgents to pick up changes to the openedge.properties configuration file.
- Request the following URL via Postman (or similar):
GET http://<Your_Instance_URL>/web/test - Repeat the above tests as necessary to find suitable -Mm and -prefetch* values which maximize your throughput on the client-server connection.
Example:
Run the WebHandler class for a PASOE instance connecting to a Sports2000 database:Examining the following an example of 100 sequential requests, the response times were reduced by 200ms overall by doubling the message size (-Mm):
-Mm 16384
{
“security": "8ms",
"multiReads": "830ms"
}
100 Sequential Requests: 0.911-1.156 sec. (~0.245 sec.)
-Mm 32600
{
“security": "8ms",
"multiReads”: "630ms"
}
100 Sequential Requests: 0.715-0.952 sec. (~0.237 sec.)
AWS Machine Sizing & AWS Latency
While running this benchmark testing, AWS latency between a PASOE machine(EC2 instance), database server and availability zones(AZ) affecting the application’s response time can be captured with Network Tools between the IP addresses of the PAS instance and the Database Server listening on a port from the -minport / -maxport range.
Review the following Articles regarding AWS where further investigation needs to be addressed with AWS support directly.