How to know what app server a user is on? (10.2.300)

We’re running 10.2.300.7 on 3 app servers to balance the load. It seems Epicor takes care of assigning which app server a user gets connected to at the login, but it’s not always the same one.

How can we see what app server the user is on? Any fields I can use to create a dashboard for this?

Thanks for the help.

Are you using a Load Balancer?

Jose - I don’t believe so… Not a separate appliance. It’s vanilla Server 2016 OS VM’s on VSphere. @esapco_mh?

The I would guess you can use the session.AppServerURL to see where they are

I couldn’t find a session table in BAQ, so I decided to check Haso’s 10.2.300 schema CHM, but drawing a blank there too…

Session is not on a table. You can get at it from a BPM on GetList or Update in the BAQ (if you make your BAQ Updatable)

Can you verify under Management console, under the sessions if you see such info maybe? (i am not at my office cannot see… )

If I remember correctly, you could see all used licenses…and who was using them…

but do not know which table it uses…

Pierre

If you go to Settings>Preferences you should be able to show server
image

1 Like

The Epicor Client network plumbing only knows about the AppServer specified in the Client Sysconfig so if you are seeing that your three different AppServers are in fact active, then you have some sort of load balancing in play.

In general terms, there are two types of load balancing schemes - one that applies Server Affinity (Sticky) and one that does not. If your load balancing scheme uses Sticky sessions, the Client connection “traffic” will always end up on the same AppServer selected by the load balancing when the connection to the AppServer was first created. For non-sticky load balancing, each individual call to the AppServer is routed separately and there is no practical way to predict which AppServer will handle the call.

2 Likes

Jose - Thanks. I’ll have to explore an updatable BAQ… It’d be awesome if I could include it as a column in the System Monitor.

Pierre - I don’t think the management console listed the connected app server, but it’s been a while since I’ve poked there.

Aaron - I do have that checked, and it always shows APP1 on the footer. This morning I submitted the RecalcCustomerCredit process, and saw increased usage on APP3. Then submitted one of the zScheduled executive dashboard processes, and saw the usage on APP2.

Rich - Thank you for the explanation. Does Epicor use logic for the non-sticky load balancing, and tries to send it to the least loaded server? Or it’s not able to see what the load is, and is random?

Seems like we have non-sticky load balancing going on. I’ll explore setting it in my Sysconfig when I need to run larger load processes, and see what I can do with Jose’s suggestion of getting the session.AppServerURL.

Session AppServer URL will always match the value specified in the Client Sysconfig - the Epicor Client will always try and communicate with that AppServer and if it ends up somewhere else, that is due to your load balancing scheme. The Epicor connection logic is very simple - connect to AppServer specified in Client Sysconfig.

2 Likes

Does a scheduled task always run on the app server that the client connection was using when the task was scheduled?

And re-occurrences too?

No - scheduled and submitted reports and tasks are managed by the Task Agent and the Task Agent rules.

It is very common to use an AppServer specifically for reporting and task which is not part of the load balanced pool.

1 Like

This makes sense, since the Agent has to be setup on a specific AppServer in EAC.

@askulte - did you find a way to determine what app server a user is on? We have multiple app servers and in preparation for going live with 10.2.400 we need to update .NET on a few of them and would like to know if any users are logged into a specific app server at any point in time.

We use a baq widget we publish to all the users which tells us which server they are on

@kfierce - We instruct our users to turn on the server on the status bar with Actions > Options > Global Options > and check the server status bar panel. Maybe Jose’s method can populate a dashboard for admin’s to see which server folks are logged on.

Enhancement request for Epicor - Add that to the EAC. :slight_smile:

I think I know the answer but what aspect are you looking for in this area. I usually see three flavors of this need…

  1. Production vs Test awareness. Something obvious like you don’t want to destroy live data accidentally so make it obvious which db you are looking at.

  2. While triaging - which actual app process you were in when something went poof. Used to track down the log file, find the incorrect config on that app server, etc

  3. What’s the public URL to get to this whole of the system. NOT the local box if you are trying to get load balancing to occur, you need to public endpoint of the load balancer.

We can’t we have all 3? Asking for a friend

2 Likes