Keys to Success for Progress Application Server for OpenEdge (PASOE) in Production. Roy Ellis

Similar documents
Living with Pacific Application Server for OpenEdge (PAS for OpenEdge) Peter Judge

Introduction to Pacific Application Server. Peter Judge

Webspeed. I am back. Enhanced WebSpeed

How I Stopped Worrying and Learned to Love Open Source. David Cleary Progress

PROGRESS APPLICATION SERVER FOR OPENEDGE: TUNING GUIDE. Author: Michael Jacobs Senior Software Architect, Progress OpenEdge

Progress Application Server

When DR Is Not Enough

When DR is not Enough

COPYRIGHTED MATERIAL

Data encryption & security. An overview

Integrating the Progress Rollbase Portal into OpenEdge Applications. Mike Fechner, Director, Consultingwerk Ltd.

Create Import Data Connection to SAP BPC MS

12/15/2017. Pro2_Web Initial Development Environment Setup Pro2: Web Interface. Damon Benson

Import Data Connection to an SAP ERP System

Informatica Developer Tips for Troubleshooting Common Issues PowerCenter 8 Standard Edition. Eugene Gonzalez Support Enablement Manager, Informatica

Import Data Connection to an SAP BW System

Import Data Connection from an SAP Universe

C-JDBC Tutorial A quick start

OpenEdge Roadmap. Rob Straight Director, OpenEdge Product Management October 25, 2018

Tomcat Load Balancing for Progress Application Server for OpenEdge

REST in Peace Mastering the JSDO with a Dynamic ABL backend. Mike Fechner, Consultingwerk Ltd.

PAS for OpenEdge Support for JWT and OAuth Samples -

Accessing the Progress OpenEdge AppServer. From Progress Rollbase. Using Object Script

QAD.NET UI Learn to Speak ERROR

The Backend of OE Mobile in OpenEdge Mike Fechner, Consultingwerk Ltd. PUG Challenge Americas, June 2013

Course: JBoss Training: JBoss AS 7 and JBoss EAP 6 Administration and Clustering Training

Installing and Configuring VMware Identity Manager Connector (Windows) OCT 2018 VMware Identity Manager VMware Identity Manager 3.

Implementing load balancing for PAS for OpenEdge based on Tomcat Load Balancing

GlassFish v2.1 & Enterprise Manager. Alexis Moussine-Pouchkine Sun Microsystems

JBOSS AS 7 AND JBOSS EAP 6 ADMINISTRATION AND CLUSTERING (4 Days)

Magnolia. Content Management Suite. Slide 1

OpenEdge Developers Kit

OpenEdge Developers Kit

OpenEdge 12.0 Database Performance and Server Side Joins. Richard Banville Fellow, OpenEdge Development October 12, 2018

GroupWise Architecture and Best Practices. WebAccess. Kiran Palagiri Team Lead GroupWise WebAccess

Understanding Feature and Network Services in Cisco Unified Serviceability

1 Performance Optimization in Java/J2EE

Administering the JBoss 5.x Application Server

GIS Deployment Guide. Introducing GIS

Administration Manual

Working with OpenEdge Data and Business Logic in a Kendo UI Builder Application

Integrating Progress Rollbase with OpenEdge the REST of the story. Mike Fechner, Director, Consultingwerk Ltd.

App Studio 4.1 Deployment Guide

TM1 9.5 Quick Installation and Upgrade Guide. Nature of Document: Tip or Technique Product(s): TM1 9.5 Area of Interest: Upgrade/Migration

Agent Interaction SDK Java Developer Guide. About the Code Examples

Open XML Gateway User Guide. CORISECIO GmbH - Uhlandstr Darmstadt - Germany -

Workload Control Center Performance Tuning

Guide Organization JReport Monitor Server

Installing or Upgrading ANM Virtual Appliance

Deployment Scenario: WebSphere Portal Mashup integration and page builder

TomcatCon London 2017 Clustering Mark Thomas

SAND CDBMS Nearline for SAP BW v3.1 MR2

What s New in OpenEdge 11.4?

SecureAware Technical Whitepaper

1 CUSTOM TAG FUNDAMENTALS PREFACE... xiii. ACKNOWLEDGMENTS... xix. Using Custom Tags The JSP File 5. Defining Custom Tags The TLD 6

ControlUp v7.1 Release Notes

White Paper: Addressing POODLE Security Vulnerability and SHA 2 Support in Progress OpenEdge in 10.2B08

Web Services. GC: Web Services Part 3: Rajeev Wankar

Sun Java System Application Server 8.1: Administration & Deployment

HT801/HT802 Firmware Release Note IMPORTANT UPGRADING NOTE

COPYRIGHTED MATERIAL. Getting Started with Geronimo. Where to Find Geronimo

IBM WebSphere Application Server V4.0. Performance. 10/02/01 Copyright 2001 IBM Corporation WS40ST11.prz Page 248 of of 28

FUSION REGISTRY COMMUNITY EDITION SETUP GUIDE VERSION 9. Setup Guide. This guide explains how to install and configure the Fusion Registry.

Oracle Developer Studio 12.6

Best Practices for Developing & Deploying Java Applications with Docker

As you learned in Chapter 1, the architectural variations you can construct using

LoanPro Software Staging Release

CS506 Web Design & Development Final Term Solved MCQs with Reference

Configuring Trace. Configuring Trace Parameters CHAPTER

Welcome to the JReport Server Monitor User's Guide

Using Automated Network Management at Fiserv. June 2012

VMware vfabric AppInsight Installation Guide

Process Description and Control

HT801/HT802 Firmware Release Note IMPORTANT UPGRADING NOTE

ZENworks 2017 Update 1 ZENworks Diagnostics and Probe Guide. July 2017

GlassFish Monitoring with JMX, Jconsole, Glassbox and AMX

HT812/HT814 Firmware Release Note IMPORTANT UPGRADING NOTE

Progress Dynamics for OpenEdge Architect 10.1B Software Configuration Management

ORACLE ENTERPRISE MANAGER 10g ORACLE DIAGNOSTICS PACK FOR NON-ORACLE MIDDLEWARE

Genesys Administrator Extension Migration Guide. Prerequisites

Borland Application Server Certification. Study Guide. Version 1.0 Copyright 2001 Borland Software Corporation. All Rights Reserved.

Administration Manual

Scaling DreamFactory

Frequently Asked Questions About Performance Monitor

T-Server and CSTA Connector General Deployment

Tapestry. Code less, deliver more. Rayland Jeans

Pega Predictive Diagnostic Cloud Security

Deployment Guide. 3.1 For Windows For Linux Docker image Windows Installation Installation...

Performance Objects and Counters for the System

Optimizing the Data Integration Service to Process Concurrent Web Services

Installing or Upgrading the Cisco Nexus Data Broker Software in Centralized Mode

Subject: VP Agent Installation and Configuration Date: April 23, 2008 From: Magpie Telecom Insiders

Processes. Johan Montelius KTH

Release 12 Java Infrastructure. Brian Bent April 17, 2008

Cisco Unified Serviceability

OPENEDGE TRAINING SYNOPSES course synopses for OpenEdge Training.

Administering vrealize Log Insight. September 20, 2018 vrealize Log Insight 4.7

Servlet Fudamentals. Celsina Bignoli

A process. the stack

Exam Name: IBM Certified System Administrator - WebSphere Application Server Network Deployment V7.0

Transcription:

Keys to Success for Progress Application Server for OpenEdge (PASOE) in Production Roy Ellis ellis@progress.com

Understanding PASOE Run the newest versions Configure PASOE for your application Monitoring PASOE Memory Summary 2

Understanding PASOE PASOE is _NOT_ the Classic AppServer 3

Classic AppServer 4

Progress Application Server for OpenEdge 5

GTO Car Transport people Tesla Car Transport people Uses Gas No Computer 4 Speed Transmission 10 miles to the gallon Uses Electricity Is a Computer No Transmission 110 miles to gallon 6

Classic AppServer Runs ABL code Supports: REST WSA WebSpeed AppServer Mobile PASOE Runs ABL code Supports: REST SOAP WEB APSV Mobile 7

Classic AppServer No Web Server 1 Agent = 1 ABL Session No Built-in Security Adapters for REST, WSA, AIA WebSpeed messenger AppServer protocol Requires AdminServer Load Balancing via NameServer PASOE It is a Web Server! 1 Agent = many ABL Sessions Spring Security REST, SOAP, APSV Built-in WEB Transport Built-in New Web Handler Stand Alone Load Balancing using industry standard products 8

Understanding PASOE Architecture 9

Architecture: Components Classic AppServer Components PAS for OpenEdge Components AdminServer Client AIA WSA WebSpeed REST/Mobile NameServer Client PAS for OpenEdge APSV (AIA) SOAP (WSA) REST/Mobile WebSpeed AppServer Session Manager Agent Agent (11 Agent (1 ABL Agent (1 ABL Session) (1 ABL Session) ABL Session) Session) MSAgent ABL 1 ABL Sessions 1 ABL Session ABL ABL Session 10

Architecture: Sample Classic AppServer Components PAS for OpenEdge Components AdminServer State-Aware Client AIA WSA WebSpeed REST/Mobile NameServer Stateless State-Free Rest/Mobile Client PAS for OpenEdge APSV (AIA) SOAP (WSA) REST/Mobile WebSpeed AppServer AppServer AppServer Session Manager 50 Agent Agents Agent (1 Agent (1 ABL (1 ABL Session) ABL Session) Session) 50 Agent Agents Agent (1 Agent (1 ABL (1 ABL Session) ABL Session) Session) 50 Agent Agents Agent (1 Agent (1 ABL (1 ABL Session) ABL Session) Session) MSAgent 1501 ABL Sessions 1 ABL ABL Session ABL Session 11

Architecture: Multi-Session Agent Multiple client requests at the same time Supports both Session-Managed and Session-Free request simultaneously Manages database shared memory connections Uses much less system resources Handles multiple times more transactions than the single session AppServer agents 12

PROMON - RDBMS Self-service Connections User Control: by user number for all tenants Usr:Ten Name Domain Type Wait Table:Part Dbkey Trans PID Sem Srv Login Time 0 root 0 BROK -- 0 0 0 8068 0 0 04/01/15 19:14 5 root -4 SELF/PASA -- 0 0 0 9596 2 0 04/01/15 19:19 6 root 0 SELF/PASN -- 6 1412160 0 9596 3 0 04/01/15 19:19 7 root 0 SELF/PASN -- 6 924864 0 9596 3 0 04/01/15 19:19 8 root -4 SELF/PASN -- 0 0 0 9596 4 0 04/01/15 19:19 9 root -4 SELF/PASN -- 6 030912 0 9596 4 0 04/01/15 19:19 10 root -4 SELF/PASN -- 6 1427776 0 9596 5 0 04/01/15 19:19 11 root 0 MON -- 0 0 0 1359 5 0 04/02/15 15:10 13

PROMON - RDBMS Self-service Connections User Control: by user number for all tenants Usr:Ten Name Domain Type Wait Table:Part Dbkey Trans PID Sem Srv Login Time 0 root 0 BROK -- 0 0 0 8068 0 0 04/01/15 19:14 5 root -4 SELF/PASA -- 0 0 0 9596 2 0 04/01/15 19:19 6 root 0 SELF/PASN -- 6 1412160 0 9596 3 0 04/01/15 19:19 7 root 0 SELF/PASN -- 6 924864 0 9596 3 0 04/01/15 19:19 8 root -4 SELF/PASN -- 0 0 0 9596 4 0 04/01/15 19:19 9 root -4 SELF/PASN -- 6 030912 0 9596 4 0 04/01/15 19:19 10 root -4 SELF/PASN -- 6 1427776 0 9596 5 0 04/01/15 19:19 11 root 0 MON -- 0 0 0 1359 5 0 04/02/15 15:10 14

PROMON - RDBMS Self-service Connections User Control: by user number for all tenants Usr:Ten Name Domain Type Wait Table:Part Dbkey Trans PID Sem Srv Login Time 0 root 0 BROK -- 0 0 0 8068 0 0 04/01/15 19:14 5 root -4 SELF/PASA -- 0 0 0 9596 2 0 04/01/15 19:19 6 root 0 SELF/PASN -- 6 1412160 0 9596 3 0 04/01/15 19:19 7 root 0 SELF/PASN -- 6 924864 0 9596 3 0 04/01/15 19:19 8 root -4 SELF/PASN -- 0 0 0 9596 4 0 04/01/15 19:19 9 root -4 SELF/PASN -- 6 030912 0 9596 4 0 04/01/15 19:19 10 root -4 SELF/PASN -- 6 1427776 0 9596 5 0 04/01/15 19:19 11 root 0 MON -- 0 0 0 1359 5 0 04/02/15 15:10 15

PASOE at Instance Create and Run-time $DLC/servers/pasoe $WRKDIR/oepas1 OS Process PAS for OE (template) PAS for OE Instance PAS for OE Process lib bin *.sh conf webapps common/lib openedge extras Copy & tailor Full copy ( ROOT [ *.war ] ) Full copy *.sh conf logs temp work webapps openedge lib bin *.sh conf logs temp work webapps common/lib openedge tcman create tcman start ( CATALINA_HOME ) ( CATALINA_BASE ) 16

PASOE Development versus Production PAS for OE Development PAS for OE Production Can compile code Non-secure configuration Test server instance in $WRKDIR Remote administration included Tomcat remote admin enabled OpenEdge remote admin enabled Built-in oeabl web application (ROOT) All transport deployed and enabled Restricted: 5 concurrent requests and 1 agent defaulthandler= OpenEdge.Web.CompatiblityWebHandler Cannot compile code Secure configuration No test server instances Remote administration optional Tomcat remote admin optional OpenEdge remote admin optional Built-in oeabl web application (ROOT) All transports deployed but disabled Unrestricted: concurrent requests and agents defaulthandler= OpenEdge.Web.DefaultWebHandler 17

Run the newest versions 18

Run the newest versions 11.6.4 and 11.7.2 Many new features (more on these later) Memory leak bugs fixed Soap Out (agent calls out to soap) bugs fixed SSL/HTTPS bugs fixed OpenSSL updated Other thread-safe bugs fixed 19

Configure PASOE for your application 20

The defaults are always wrong! Don t go into production without testing your PASOE instance under expected load and modifying the configuration! We have since reset the defaults to reflect best practices Tomcat settings tcman config - will list all of the configurable values for Tomcat tcman config psc.as.executor.maxthreads=300 Will set Tomcat incoming threads to 300 (the default by the way) psc.as.https.maxqueuesize=100 thread overflow if executor maxthreads are full 21

The defaults are always wrong! openedge.properties maxagents=10 minagents=0 0 is off, >1 maintain this number numinitialagents=1 agentstartlimit=1 only start one agent at a time maxconnectionsperagent=16 max concurrent connects per agent maxablsessionsperagent=200 max agent sessions * 22

The defaults are always wrong! Tomcat PASOE Database maxthreads=300 maxqueuesize=100 maxagents=10 maxconnectionsperagent=16 Total 160 -n 100 23

Example configuration Tomcat PASOE Database maxthreads=200 maxqueuesize=100 maxagents=2 maxconnectionsperagent=100 Total 202 -n 202 + 24

Test, Test, Test Some tips for load testing, machine sizing, performance setting 1. Always run your tests with your driver on one machine, PASOE on a separate machine, and your database on a third machine 2. Start with low client load 3. What to monitor during performance testing 1. Check round-trip time 2. Check system resources (top - Load) 25

Test, Test, Test 2. What to monitor during performance testing (continued) 1. Check PASOE process memory (java) 2. Check MSAgent process memory (_mproapsv) 3. Check MSAgent Session Memory (oemanager REST API, others) 3. When to upgrade machine 1. When round-trip time starts to fall 2. When CPU load matches CPU number 3. When memory is exhausted (starts to swap) 26

Monitoring your production PASOE 27

Monitoring your production PASOE Jconsole OE Manager REST API Tomcat Manager JMX Query Log File Monitoring 28

Jconsole GUI based tool for accessing the Tomcat and PASOE JVM directly Direct access to all JMX beans and objects in the Tomcat/PASOE Session Manager 29

OE Manager REST API Must be installed to the PASOE instance tcman deploy $DLC/servers/pasoe/extras/oemanager. war Results in: ~/webapps/oemanager Can now access PASOE information via HTTP/REST calls http://localhost:8810/oemanager/applica tions/oepas1/metrics 30

OE Manager REST API Available via HTTP/REST Must secure if using in Production Change the default passwords ~/conf/tomcat-users.xml Limit access to the URL (Remote Address Filter) webapps/oemanager/web-inf/web.xml 31

OE Manager REST API http://localhost:8810/oemanager/applications/oepas1/metrics Like asbman query from classic http://localhost:8810/oemanager/applications/oepas1/sessions All current client sessions in the Session Manager http://localhost:8810/oemanager/applications/oepas1/agents/22484/sessions Shows all agents ABL sessions, start and end times, Session memory http://localhost:8810/oemanager/applications/oepas1/agents/22484/requests Shows all current requests in the agent 32

Tomcat Manager Web based management and monitoring Tomcat process ABL and Web Applications Data on current requests to the web server Data on memory size of the web server (including the Session Manager) More 33

JMX Query Script based access to the Tomcat JMX beans Allows gathering information locally without opening ports Like Jconsole, without GUI interface Available in 11.6.4 and 11.7.2 ~/bin/oejmx.sh(.bat) Self documented in the script/batch file White paper to follow 34

Memory 36

Memory: MSAgent Memory usage will appear to be multiplied We use less memory in total, but its all in 1 executable If you classic AppServer agent routinely used 2 Gig of memory Moving to PASOE and setting the maxconnectionsperagent=100 Results in an msagent somewhere under 200 (historically 140) Gig of memory 37

Memory: MSAgent Although PASOE is our new web application server, it is also a very good tool for exposing memory leaks! Having 100 ABL sessions in a single agent (versus 1 session in Classic) Memory issues and leaks are multiplied by 100 times! This means a 100 Meg leak of 24 hours Is now 10 Gig over the same 24 hours in PASOE 38

Memory: MSAgent Progress has fixed some memory issues highlighted by PASOE Client-Principal, SSL, Web Handler Tools to help you find memory leaks (new and improved) New memory-checker Ability to dump memory allocation of object to a file per ABL session Note: run with one agent and one session Updated Dynamic Object leakchecker.p Dump a ABL session stack (like prostack) via the oemanager REST API 39

Memory Checker DEF NEW GLOBAL SHARED VARIABLE iactcnt AS INT NO-UNDO. iactcnt = iactcnt + 1. IF iactcnt = 50 THEN _memory:start-mem-check(leak-detection,true,?). ELSE IF iactcnt = 200 THEN _memory:stop-mem-check(). 40

Memory leakchecker Turn on Dynamic Object logging In the configuration file, openedge.properties agentlogentrytypes=asplumbing,db.connects,dynobjects.* DynObjects.Class DynObjects.DB DynObjects.Other DynObjects.XML DynObjects.UI 41

Memory leakchecker Turn on Dynamic Object logging In an sessionactivateproc DEF NEW GLOBAL SHARED VARIABLE iactcnt AS INT NO-UNDO. DEF NEW GLOBAL SHARED VARIABLE clogentries AS CHARACTER NO-UNDO. iactcnt = iactcnt + 1. IF iactcnt = 50 THEN DO: ASSIGN clogentries = log-manager:log-entry-types log-manager:log-entry-types = log-manager:log-entry-types + ",DYNOBJECTS.*:4". END. ELSE IF iactcnt = 200 THEN DO: log-manager:log-entry-types = clogentries. END. 42

Memory leakchecker Once the information is logged to the oepas1.agent.log Run the new leakchecker.p https://knowledgebase.progress.com/articles/article/p133306 This will show any leaking objects by showing any created but not deleted dynamic objects 43

ABL session stack This will dump ABL session information for an ABL session If the session is using large amounts of memory This will dump the current ABL stack for review http://localhost:8810/oemanager/applications/oepas1/agents/224 84/sessions/7/stacks 44

ABL session stack {versionno: 1,versionStr: "v11.6.4 ( 2017-09-23 )",errmsg: "",outcome: "SUCCESS", result: { ABLStacks: [{ AgentSessionId: 7, StartupParams: "-pf C:\Progress\116\OpenEdge\startup.pf,-cpinternal ISO8859-1,-cpstream ISO8859-1,-cpcoll Basic,-cpcase Basic,-d mdy,-numsep 44,-numdec 46,(end.pf),-logginglevel 2,-logfile C:\OpenEdge\116\WRK\oepas1/logs/oepas1.agent.log, Propath:",C:\OpenEdge\116\WRK\oepas1\openedge,C:\Progress\116\OpenEdge\tty,C:\Progress\116\OpenEdge\tty\ablunit.pl,C:\Progress\116\OpenEdge\tty\adecomm.pl,C:\Progress\116\OpenEdge\tty\adecomp.pl, ", Databases: [ ], PersProcs: [{Proc: "C:\Progress\116\OpenEdge\tty\webutil\_wstyle.r",ProcId: 1079},... OO4GLObjs: [{Class: "OpenEdge/Logging/Logger.r",ObjectId: "001051"},...], Callstack: [ ], Status: "Idle"}]}, operation: "GET SESSION RUNTIME STACKS"} 45

Memory: Reclaiming System Memory First try removing high memory Agent sessions curl -v -X DELETE -u tomcat:tomcat http(s)://host:port/oemanager/applications/agents/agentid/sessions/sessionid If that doesn t work you can stop an Agent This will return memory to the system This REST API allows 10 seconds for all currently running requests to finish before stopping https://documentation.progress.com/output/ua/openedge_latest/index.html#page/pasoeadmin%2fstop-an-agent.html%23 Set minagents=(a number 2 or greater) This will restore agents to the pool when an agent is stopped (or crashes) 46

Memory: Reclaiming System Memory Surprise! oom_kill Unix systems Kills the largest memory using process when memory threatened MSAgent was being killed! 47

Memory: Resource Timeout agentlistenertimeout=300000 These values are milliseconds agentwatchdogtimeout=3000 connectionwaittimeout=3000 idleagenttimeout=300000 If running with a backup agent may want to disable this value (0) idleconnectiontimeout=300000 idleresourcetimeout=0 Must be set to >0 to enable, NO timeouts enabled when set to 0 idlesessiontimeout=300000 requestwaittimeout=15000 sockettimeout=3000 sessiontimeout=180 48

Memory: Tomcat OpenClient connections Be sure to release and dispose of OpenClient connections Previously dotnet and JAVA connect to the UBroker UBroker would clean up abandonded connections dotnet and JAVA now connecting to the PASOE web server Web server leaves the connections open for another request We have seen tomcat thread leaks because OpenClients are not closing their connections https://knowledgebase.progress.com/articles/article/net-open-clientdisconnect-messages-not-received-by-pasoe 49

Call to Action Make the time to understand PASOE Stay up-to-date with the newest version Test and properly configure PASOE Test and look for memory issues Set up monitoring for PASOE 50