Appserver Active Clients

Posted by Carlos Vázquez on 16-Nov-2017 10:29

Hi, I am using OE11.63, over AIX plataform, we have a appserver with a lot of request, but our problem is "Active Clients"

We see that the number of clients is growing as the day progresses until it reaches its maximum and blocks the service.

The current value for maximum clients is 1024, and I don´t want to keep growing it.

There is a way to free the appserver? this is a programming issue? 

All Replies

Posted by Brian K. Maher on 16-Nov-2017 10:34

Hi Carlos,
 
If you don’t actually have that many physical users then this is most likely an application coding issue where the code is not disconnecting from the appserver and/or the client is not deleting persistent procedures it ran on the appserver.
 
Brian

Posted by Carlos Vázquez on 16-Nov-2017 10:48

Hi Brian, thanks for your  answer, but, apart of  

h_app:disconnect()

delete object h_app.

There is any thing else to do it?

Regards

Posted by Brian K. Maher on 16-Nov-2017 10:52

What is appserver operating mode?
 
 

Posted by Carlos Vázquez on 16-Nov-2017 10:55

This si the app server status, the mode is Stateless.

asbman -i soiw -q

OpenEdge Release 11.6.3 as of Thu Sep  8 19:00:46 EDT 2016

Connecting to Progress AdminServer using rmi://localhost:20931/Chimera (8280)

Searching for soiw (8288)

Connecting to soiw  (8276)

Broker Name                    : soiw

Operating Mode                 : Stateless

Broker Status                  :  ACTIVE

Broker Port                    : 3995

Broker PID                     : 13763050

Active Servers                 : 10

Busy Servers                   : 1

Locked Servers                 : 0

Available Servers              : 9

Active Clients (now, peak)     : (1, 7)

Client Queue Depth (cur, max)  : (0, 0)

Total Requests                 : 7590

Rq Wait (max, avg)             : (1 ms, 0 ms)

Rq Duration (max, avg)         : (17448 ms, 82 ms)

PID   State     Port  nRq    nRcvd  nSent  Started          Last Change      

14877282 AVAILABLE 02707 000752 000752 000756 Nov 16, 2017 07:52 Nov 16, 2017 10:55

15466592 AVAILABLE 02708 000758 000758 000758 Nov 16, 2017 07:52 Nov 16, 2017 10:55

15073384 AVAILABLE 02709 000772 000772 000773 Nov 16, 2017 07:52 Nov 16, 2017 10:55

14418184 AVAILABLE 02710 000763 000763 000765 Nov 16, 2017 07:52 Nov 16, 2017 10:55

13566458 AVAILABLE 02711 000753 000753 000755 Nov 16, 2017 07:52 Nov 16, 2017 10:55

13238372 AVAILABLE 02712 000749 000749 000752 Nov 16, 2017 07:52 Nov 16, 2017 10:55

14353336 RUNNING   02713 000763 000763 000764 Nov 16, 2017 07:52 Nov 16, 2017 10:55

7471450 AVAILABLE 02714 000749 000749 000750 Nov 16, 2017 07:52 Nov 16, 2017 10:55

14025082 AVAILABLE 02715 000767 000767 000767 Nov 16, 2017 07:52 Nov 16, 2017 10:55

14287100 AVAILABLE 02716 000765 000765 000767 Nov 16, 2017 07:52 Nov 16, 2017 10:55

Posted by Brian K. Maher on 16-Nov-2017 11:04

You are running stateless operating mode.  Check any program that runs something on this appserver and ensure that you disconnect (like you are doing) and also you do a delete procedure <blah> against any procedure you ran persistently on the appserver from the client, for example...
 
run bubba.p on server hAppServer persistent set hProc.
 
 

Posted by Carlos Vázquez on 16-Nov-2017 11:25

We don´t run any persistent programs.  This appserver is the back end for a REST application, have a lot of calls, but shorts ones.

Running  the same  programs all day long, but as the number of request grow, fail to free the client.

Here is a example of code that we are using.

   114     CREATE SERVER h_app.

   115     msino = h_app:CONNECT ("-AppService soiw -S 5162 -H " +

   115     mServer) NO-ERROR.

   116

   117   1     IF NOT msino THEN DO:

   118   1         CREATE estatus.

   119   1         estatus.codigo  = "500".

   120   1         estatus.mensaje = "Sin conexion para crear Venta".

   121   1         RETURN.

   122         END.

   123

   124         RUN soi/crea_t_pagos_3.p ON h_app ( TABLE sesion,

   125                                             ticket.origen,

   126                                             ticket.ticket,

   127                                             INPUT TABLE pago,

   128                                             INPUT TABLE opcionales,

   129                                             OUTPUT TABLE venta,

   130                                             OUTPUT TABLE estatus

   131                                           ).

   132

   133     h_app:DISCONNECT ().

   134     DELETE OBJECT h_app.

Posted by Brian K. Maher on 16-Nov-2017 11:32

Carlos,
 
If that is all the code does then I don’t have an answer.  Please open a support case so we can investigate this in more detail.
 
Thanks, Brian

Posted by Carlos Vázquez on 16-Nov-2017 11:37

Thanks Brian, I already did it. But I am looking everywhere for help...Some times over here is faster than support..  

Posted by richardz on 17-Nov-2017 01:16

Hello Carlos,

at line 121 you leave your program without deleting object h_app.

The persistent procedure does still persistently on the appserver from the client.

I think that, if you delete object h_pp before the RETURN, your problem maybe is solved.

Kind regards,

Richard Zwart

Posted by Akshay Guleria on 17-Nov-2017 01:33

I agree with [mention:6a07d624f4174b7395501c64e5a45da8:e9ed411860ed4f2ba0265705b8793d05] and adding to what he suggested. Delete "object h_app" inside the FINALLY block. This will make sure that object is deleted even when there are abrupt/unhandled exceptions in the code.

This thread is closed