Salesforce

Tips to improve ABL HTTP client performance

« Go Back

Information

 
TitleTips to improve ABL HTTP client performance
URL NameTips-to-improve-ABL-HTTP-client-performance
Article Number000114546
EnvironmentProduct: OpenEdge
Version: 11.5, 11.6, 11.7, 12.x
OS: All supported platforms
Other: ABL HTTP Client
Question/Problem Description
Tips to improve ABL HTTP client performance.

How to improve the performance of the ABL HTTP client?

How to make the ABL HTTP client complete requests faster?

What OpenEdge features can be tuned to try to improve the performance of the ABL HTTP client?

 
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Ensure that OpenEdge.Net.pl is near the top of the PROPATH and before any remote drives.
Progress will search each PROPATH component (directory in PROPATH) for what has been specified in the RUN statement. Placing the procedure library early in the PROPATH will reduce the number of searches and ensure that the required classes are found quicker. See the following article for more details:

 How does Progress search for compiled ( .r ) and uncompiled ( .p ) code in the PROPATH?


Disable TCP-NODELAY in socket options.
Setting TCP-NODELAY to FALSE disables both the delayed ACK and the Nagle algorithm on sockets, removing some overhead. This can be achieved using socket options. See the following articles for more details:

What Is the TCP-NODELAY option in 4GL Sockets
 How to set socket options using OpenEdge HttpClient?

Sample code:
USING OpenEdge.Net.HTTP.ClientBuilder.
USING OpenEdge.Net.HTTP.IHttpClientLibrary.
USING OpenEdge.Net.HTTP.IHttpRequest.
USING OpenEdge.Net.HTTP.IHttpResponse.
USING OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder.
USING OpenEdge.Net.HTTP.RequestBuilder.
USING OpenEdge.Net.ServerConnection.ClientSocket.

DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
DEFINE VARIABLE oSocket AS ClientSocket NO-UNDO.
DEFINE VARIABLE oLib AS IHttpClientLibrary NO-UNDO.

ASSIGN oSocket = NEW ClientSocket()
oSocket:NoDelay = FALSE
oLib = ClientLibraryBuilder:Build()
:Option(GET-CLASS(ClientSocket):TypeName, oSocket)
:Library
oRequest = RequestBuilder:Get('https://www.progress.com')
:Request.

oResponse = ClientBuilder:Build():Client:Execute(oRequest).

MESSAGE
oResponse:StatusCode SKIP
oResponse:StatusReason SKIP
VIEW-AS ALERT-BOX.


Use -q startup parameter in production.
The Quick Request (-q) Client Session parameter will force the AVM to use a procedure stored in memory first, if it exists, before reading through the folders in the PROPATH.


Upgrade to OpenEdge 12.1 or later.
Prior to OpenEdge 12.1, the AVM was performing additional, unnecessary searches. This has been addressed in OpenEdge 12.1 and later, reducing the number of searches performed. See the following article for more details:

Procedure libraries on PROPATH are searched for as directory entries
 
Resolution
Workaround
Notes
Performance can also be impacted by external factors, such as networking issues, slow machines, etc., that are beyond the scope of this article.

References to Other Documentation:
Progress Article(s):
Getting started with HTTP client for OpenEdge
 
Keyword Phrase
Last Modified Date3/9/2023 6:33 PM

Powered by