PASOE Performance Issue with NEWING class - Forum - OpenEdge Development - Progress Community

PASOE Performance Issue with NEWING class

 Forum

PASOE Performance Issue with NEWING class

This question is not answered

 We just ran into an issue with a customer that just migrated from 11.4 Classic Appserver to 11.7.5 PASOE. The system was just running slow......

We narrowed it down to backend logic.

We then narrowed it down to our logging mechanism.

We then narrowed it down to NEW ClassName ().

It appears that NEWING a class in PASOE is 22x slower than doing the same in a GUI client (WebClient)

I just threw together a quick repro. The WriteMessage METHOD has no code in it so nothing is being done. 

 

On GUI Client;

 The following takes 1312ms when just passing a CHAR

 

DO iCnt = 1 TO 1000000:

     

   LogManager:WriteMessage("Test1",

                                                "ORS_APP" // we only want this to be logged if ORS_APP is enabled which is old logging                                

                                               ).

END.

 

The following takes 5268ms so about 4x slower

 

DO iCnt = 1 TO 1000000 ON ERROR UNDO, THROW:

     

   LogManager:WriteMessage("Test1",

                          NEW MessageSubSystem ("ORS_APP") // we only want this to be logged if ORS_APP is enabled which is old logging

                         ).

                              

END.

 

On PASOE server;

 

The following takes 1531ms when just passing a CHAR.

 

DO iCnt = 1 TO 1000000:

     

   LogManager:WriteMessage("Test1",

                          "ORS_APP" // we only want this to be logged if ORS_APP is enabled which is old logging

                               ).

END.

 

The following takes 120324ms so 22x slower than the same code on the GUI client.

 

DO iCnt = 1 TO 1000000 ON ERROR UNDO, THROW:

     

   LogManager:WriteMessage("Test1",

                          NEW MessageSubSystem ("ORS_APP") // we only want this to be logged if ORS_APP is enabled which is old logging

                         ).

                              

END.

Is this expected? I would hope not.

All Replies
  • Well, it turns out we have a few issues. One issue was definitely the -q. Once I was able to get into the customers production server I quickly found out it was enabled on the client but not the server. Thanks Tim and David. I am still not sure why we could not see the same when toggling the -q in our office but that's another story.

    The other issue we are experiencing is the MSAS agent is actually crashing with no error. We are working with tech support on this issue.

    Thanks.

  • >> MSAS agent is actually crashing with no error

    If you are running on Windows, then I'd recommend getting on a recent SP if possible (I've been fairly happy with OE 11.7.4 and 11.7.5).

    Also on windows - remember to create anti-virus (defender) exclusions, and disable "data execution prevention" (DEP).     In theory Progress OE is supposed to be DEP-compliant but I had a case where PASOE was crashing in a fairly recent version of OE 11 and it was because DEP was still enabled.  

    Checking DEP was one of the first things that tech support had asked to do.  Once we disabled DEP the crashing stopped.  

    See: knowledgebase.progress.com/.../P119884

  • Small note about the DEP - if you're using 3rd-party components, make sure those are DEP compliant as well. If they're not, those components are likely to originate the crashes.

    Anything that uses any form of native code (Com/ActiveX, direct DLL calls) in particular should be considered suspect until verified.

  • >> If you are running on Windows, then I'd recommend getting on a recent SP if possible (I've been fairly happy with OE 11.7.4 and 11.7.5).

    We are running 11.7.5,

    >> Also on windows - remember to create anti-virus (defender) exclusions, and disable "data execution prevention" (DEP).    

    We just did that yesterday and will see what happens.

    >> Small note about the DEP - if you're using 3rd-party components, make sure those are DEP compliant as well. If they're not, those components are likely to originate the crashes.

    The crashing is upon session startup but not all the time. It is typically happening as users are attempting to login and another session is attempting to start.

  • If it is crashing then you may have event logs (application log in windows) to back that up.  Windows should detect that the _mproapsv has crashed and write a message to application log.  At least that will keep track of how frequently this happens.  But despite the crash, PASOE should recover and start a new msagent (_mproapsv) to replace the one that crashed.   Hopefully your customer can attempt to repeat the PASOE request if they see an unusual error message.

    And you should also have protrace files that Progress can examine.  Sometimes those files can be sufficient to identify the problem, if you give them to tech support (... the ABL stack and/or the native stack trace can be helpful clues).

    The _mproapsv shouldn't crash ... we still have some issues with leaks, and sometimes with concurrency restrictions in the process, but never any unusual crashes (or at least none that would happen in _mproapsv and not also in _progres).  We've been running PASOE for about a year now.  The only times I recall any surprising crashes were when my r-code was stale (just delete all the old stuff and replace it with freshly compiled code), and when DEP was enabled.