Architecture Planning, PASOE Deployment, Licensing & ProTop Behavior Clarification

vikash

New Member
Hi Team,


We are currently using a PAS instance to deploy our web application, and the deployment has been successful. As of now, our project is running on a single-tier architecture, but we are planning to move to a three-tier architecture where:
  • One server will host the Database
  • One server will host the PAS instance (Application Server)
  • One server will handle the GUI (frontend layer)
We have a few questions and clarifications regarding this transition:

1. As we know we can deploy Application Layer and Database Layer Independently in PAS right ?​

I would like to understand to deploy the application layer (business logic) and the database layer independently within PASOE. Please help me to explain how this separation is achieved in configuration or deployment.

2. Business Logic in PASOE​

All the business logic will be resides entirely in PAS instance right ?

3. Load Balancing with Multiple PAS Servers​

How do we configure multiple PASOE servers behind a load balancer, all pointing to a single shared database? Is there a recommended approach or architecture to follow?

4. Licensing Requirements for Multiple PAS Instances​

If we plan to deploy multiple PAS instances on separate servers, do we need separate licenses for each instance, or can we use a single license across them?

5. GUI Request Handling with Load Balancer​

We assume that the GUI will send requests to the load balancer, which will then forward the request to one of the available PAS servers, and that PAS server will handle the request. Is this correct?

We referred to the following documentation:
Load Balancing Progress Application Server (PAS) for OpenEdge - Kemp
  • What are the prerequisites and licensing requirements to implement this setup?
  • Is there any official documentation available that walks through setting up load balancing for PASOE?
Also, we are aiming to implement something similar to the architecture shown in the reference image.

Screenshot 2025-07-01 at 9.23.01 PM.png

6. ProTop Client Connection Behavior​


We are currently using ProTop monitoring tool, and we have set maxClientConnection=1024 in the properties file. ProTop shows around 900 active client sessions, and once the connection count reaches 1024, both the application and database shut down unexpectedly.
However, when we check from the database side:
  • Active connections are only around 100–120
  • We have 15 WebSpeed agents and 15 AppServer agents, all in available status, none showing as busy.
Questions:
  • Why is ProTop reporting such a high number of active client sessions?
  • When we run the trim agent command, the client count drops drastically to 0–20. Why does this happen, and how do we ensure the connection count reflects the actual usage?
Looking forward to your guidance on:
  • Proper implementation steps for load-balanced PASOE
  • Licensing clarity
  • Resolving the ProTop connection reporting issue

Thanks,
 
Hi Team,


We are currently using a PAS instance to deploy our web application, and the deployment has been successful. As of now, our project is running on a single-tier architecture, but we are planning to move to a three-tier architecture where:
  • One server will host the Database
  • One server will host the PAS instance (Application Server)
  • One server will handle the GUI (frontend layer)

"Servers" do not typically make GUI requests. That would be something that, presumably, is handled on the client where the (G)UI is running.

We have a few questions and clarifications regarding this transition:

1. As we know we can deploy Application Layer and Database Layer Independently in PAS right ?​

I would like to understand to deploy the application layer (business logic) and the database layer independently within PASOE. Please help me to explain how this separation is achieved in configuration or deployment.

I don't know what you mean by that. "As we know" seems to suggest that you already know. And, yet, you are asking a question about how to do it. So I'm a bit confused.

I suppose that, maybe, what you're getting at is an idea where calls to the "application layer" turns around and makes calls to the "database layer" as needed?

I think that thinking of these as "layers" is probably a mistake. You would be better off thinking of them as groups of "services" that may call, or be called by, other services as needed.

Some services (those handling database queries and updates) require a db connection. Others do not.

The difference is whether or not there is a "-db dbname" in the [AppServer.SessMgr.*] agentStartupParam property.

2. Business Logic in PASOE​

All the business logic will be resides entirely in PAS instance right ?

Maybe.

If you write your "business logic" in such a way that it makes calls to "data access services" then you need to decide how to deploy that code. You _could_ deploy it in many ways, one of which is to package it up and access it via PASOE.

However... that very same code _could_ be run locally without PASOE being involved. It's up to you, unless you do something to lock that code into PASOE or make certain that it doesn't get copied and deployed outside of PASOE; it is not magically going to reside entirely in PASOE just because you drew a nice diagram.

(The same is true of your data access code.)


3. Load Balancing with Multiple PAS Servers​

How do we configure multiple PASOE servers behind a load balancer, all pointing to a single shared database? Is there a recommended approach or architecture to follow?


I have no idea. Someone else will have to comment on that.

I will note that at the top you mentioned a single PAS Server but now you appear to be wanting to "load balance" across multiple servers?

FWIW, you can only have a single updateable database but you _could_ use replication target databases for read-only inquiries. We have several customers who do that quite successfully. You do have a replication target in your diagram so this might be possible for you. You will need the "replication plus" product though.


4. Licensing Requirements for Multiple PAS Instances​

If we plan to deploy multiple PAS instances on separate servers, do we need separate licenses for each instance, or can we use a single license across them?


Licensing questions should be directed to Progress.


5. GUI Request Handling with Load Balancer​

We assume that the GUI will send requests to the load balancer, which will then forward the request to one of the available PAS servers, and that PAS server will handle the request. Is this correct?

We referred to the following documentation:
Load Balancing Progress Application Server (PAS) for OpenEdge - Kemp
  • What are the prerequisites and licensing requirements to implement this setup?
  • Is there any official documentation available that walks through setting up load balancing for PASOE?
Also, we are aiming to implement something similar to the architecture shown in the reference image.

View attachment 3307



Someone else will have to comment on that. But I don't see a GUI making any requests in your diagram so maybe you left something out?


6. ProTop Client Connection Behavior

We are currently using ProTop monitoring tool, and we have set maxClientConnection=1024 in the properties file. ProTop shows around 900 active client sessions, and once the connection count reaches 1024, both the application and database shut down unexpectedly.

Surely there are some log file messages explaining why the db and the application shutdown? Sharing those would go a long ways towards identifying the root cause.

However, when we check from the database side:

What does "from the database side" mean? Are you using some particular tool for that? What are the specific sources of these different numbers?

  • Active connections are only around 100–120
  • We have 15 WebSpeed agents and 15 AppServer agents, all in available status, none showing as busy.

What is an "active connection"? Where are you sourcing that number from? What tooling is showing you "available status"?

Agents <> client sessions.

The PAS agent is multi-session:



Questions:
  • Why is ProTop reporting such a high number of active client sessions?

Probably because there are a lot of active client sessions.

  • When we run the trim agent command, the client count drops drastically to 0–20. Why does this happen,

That is kind of the point of trimming agents. Did you expect something different to happen?

  • and how do we ensure the connection count reflects the actual usage?

I'm not seeing why you think that it does not reflect actual usage.

Looking forward to your guidance on:
  • Proper implementation steps for load-balanced PASOE
  • Licensing clarity
  • Resolving the ProTop connection reporting issue

Thanks,
 
Last edited:

3. Load Balancing with Multiple PAS Servers​

How do we configure multiple PASOE servers behind a load balancer, all pointing to a single shared database? Is there a recommended approach or architecture to follow?

You can take a look at Progress Documentation for some examples.

Your description is a little confusing: you mention GUI clients and a web application. What are the client types involved here? GUI? Web? Both? (there's no wrong answer here but it does influence the PASOE and load balancer configuration).

If you are dealing with GUI (or other APSV) clients you MUST use sticky sessions in the load-balancer or you will be highly unlikely to have any success connecting to a PAS instance.

Typically this is done using the JSESSIONID cookie, although I have also seen the persistence maintained by the client IP (not really recommended IMO). The doc linked above also talks about this.

If you are dealing with WEB clients, then the load balancer set up becomes less complex.

Note that there are load balancers like F5 that are not documented in detail but which are in relatively-common use in front of PASOE instances. As a rule of thumb, other than the APSV clients, it's just a Tomcat instance as far as the load balancers are concerned, and so you casn follow the load balancer's recommendations/best practices.

You are also going to start using networked DB connections. A typical deployment could be a DB server on host01, and (let's say) 3 PASOE instances on host02-04. The PAS instances connect to the DB server on host01 using something like -H host01.example.com -S xxxx connection parameters. The load balancer connects to hosts 02, 03 and 04. The clients connect to the load balancer.
 
Back
Top