Published on November 21, 2007
EAS303 Customers Speak out: EAS303 Customers Speak out Chris Bohne Consultant [email protected] 775-790-3018 8/6/2003 EAS303 Customers Speak out: EAS303 Customers Speak out Karen McDonald Consultant [email protected] 775-790-1020 8/6/2003 TEXAS WORKFORCE COMMISION (TWC): TEXAS WORKFORCE COMMISION (TWC) Onestop application for people receiving employment and training services called TWIST. Collects information on clients . Tracks services received. Reports to both Federal and State agencies. Background TWC ENVIRONMENT : TWC ENVIRONMENT Users. 10,000+. Distributed throughout the State of Texas. Some inside the firewall some outside. Network. Various connection speeds From T3 to 256K. Application. 15 to 20 concurrent DB transactions. 20 to 25 concurrent EA server requests. 1.3 Million requests processed by EA Server per day. TWC ENVIROMENT (cont.): TWC ENVIROMENT (cont.) EA Server. IBM AIX 5.1. EA Server 4.2. PB 8.0.3. Clients. Windows 95 to Windows XP. TWC OBJECTIVES: TWC OBJECTIVES Simplify release process. Reduce the amount of client releases. Reduce the size of the client. Remove business rules from client. Allow new functionality to be added without the need for client releases. Why use EA Server TWC CONCEPT : TWC CONCEPT Phase 1 – Convert existing application. Take existing application and convert all DB access to NVO’s running on EA Server. Retrieve. Update. Embedded SQL Statements. Why? Help size machine requirements. Faster then completely rewriting application. Allow users to be added to EA Server gradually. Completed June 2002. Convert to EA Server in 2 phases TWC CONCEPT (cont.): TWC CONCEPT (cont.) Phase 2 – Redesign application for EA Server. Incorporate new business requirements into new application. New programs. New data model. Complete redesign of business process. Original design was 1996-1997. Case based to customer based. New application architecture. Started with 2 EA Servers, currently using six EA Servers. Reports moved to web. Completed March 2003. Convert to EA Server in 2 phases PHASE 2 : PHASE 2 Request broker design. Single interface between client and EA Server. Data passed by blob. Advantages. Proxy never changes. Easy to monitor server use. Single focal point for solving problems . Compression. Performance Monitoring. Disadvantages. Requires Client to make request through single function. Longer time to develop base architecture. Architecture COMPRESSION: COMPRESSION Advantages. Reduce blob size 80%. Decrease network utilization. Increase data transfer times. Disadvantages. Increase processing time. Getting it working. Compression uses ZLIB open source code. http://www.topwizprogramming.com/freecode/zlib.zip (Windows) http://www-1.ibm.com/servers/aix/products/aixos/linux/download.html (AIX) CONNECTION CACHE : CONNECTION CACHE Pooled. Set value 10. Forced. Database locks. Performance problems. Issues. 10 Total. Cache limit plus context limit ct-library (CS_MAX_CONN, default 25). 10 + 25 = 35 (Total max that could be created). CONNECTION OPTIONS : CONNECTION OPTIONS ORBIdleConnectionTimeout. Disconnects user after the number of seconds set in this property . Default 0 (Never timeout). ORBRetryCount. Specifies the number of times to retry when the initial attempt to connect to the server fails. Default 5. ORBProxyHost. Needs to be set if outside our firewall. Can only be set to a single server. If set all request are processed by this server. CREATING OBJECTS : CREATING OBJECTS Connection Object. CreateInstance JaguarORB. string_to_object _Narrow createSession CREATING OBJECTS (cont.): CREATING OBJECTS (cont.) Load Balancing Load balancing is done on the client. Client tells name server(s) it wishes to create object. Name server returns where to create the object. Object created on the server returned above. Function executed. CREATING OBJECTS (cont.): CREATING OBJECTS (cont.) Firewall How can you determine at runtime if a user is inside or outside the firewall. Code in a of_Connect of the connection object. … This.CreateInstance(lnv_rb, "Common/n_broker") IF not isvalid(lnv_rb) THEN this.Disconnect() this.options = "ORBNameServiceURL='" + this.location + "', ORBProxyHost=“server1”, + & ORBSocketReuseLimit=1, ORBIdleConnectionTimeout=30“ This.connecttoserver() This.CreateInstance(lnv_rb, "Common/n_broker") END IF … FIREWALL ISSUES: FIREWALL ISSUES Load Balancing If ORBProxyHost is set then all objects are directed to that server. So what if you have more than one machine? Firewall settings. Outside Inside Server1:9000 Server1:9000 Server1:9001 Server2:9001 Server1:9002 Server3:9003 SERVER SIDE CODING: SERVER SIDE CODING Try Catch Blocks. Used in every function on server. Prevents the server from hanging on certain errors. Allows logging of the errors. Error logging. this.GetContextService("ErrorLogging", iel_log) MONTORING TOOL: MONTORING TOOL Jag Manager. Single Server at a time. No ability to collect information. Jag Monitor – Powerteam. PowerBuilder source code. Modified to monitor multiple servers . Modified to collect server information. Modified to view entire contents of Jaguar log files. http://www.powerobjects.com/jaguar/jagmon.html Location for constants. $Jaguar\include\jaguar.hpp MONTORING TOOL: MONTORING TOOL Demo MONITORING (Cont.): MONITORING (Cont.) IIOP MONITORING (Cont.): MONITORING (Cont.) Request Broker JAVA: JAVA Tuning Java. MaxHeapSize. Can be set using. com.sybase.jaguar.server.jvm.maxHeapSize = <XXX> com.sybase.jaguar.server.jvm.options, -Xmx= <XXX> Issues JAVA (cont.): JAVA (cont.) Tuning Java. MinHeapSize. Can be set using. com.sybase.jaguar.server.jvm.minHeapSize = <XXX> com.sybase.jaguar.server.jvm.options, -Xms= <XXX> LDR_CNTRL (AIX). 2 Gig limit. Each machine has 8 Gigs. Solution. Multiple instances of EA Server on each box. Issues PROBLEM SOLVING: PROBLEM SOLVING PBVM. Can you still login to EA Server. Are Monitoring tools still reporting. Java. Java core dump. EA Server. Core dump. Utilities programs. tprof svmon ps truss Determining where the problem is. CLUSTERING : CLUSTERING In the beginning. Two machines clustered. One would go down. Other could not handle load. Breaking apart the cluster. Created own round robin process. Multiple instances on each machine. Create a cluster for each machine. Put all machines into a single cluster. RESULTS: RESULTS Defect counts. 90% of all defects or enhancements have been able to be released without a client release. Reduced total client code size 70%. Reduced overall program size 80 MB to 25MB. Help file Sybase client libraries SQL anywhere database Better identifying problems. Errors are written to EA Server logs. Performance problems are written to EA Server logs. Errors are then placed in DB for review. DEPLOYMENT: DEPLOYMENT Perl. Automate jar release. Delete existing jar. Install new jar. Automate setting of properties for components. Max Instances tx_outcome pb.librarylist FUTURE: FUTURE PB 9. Web. XML. So what’s next? THE END: THE END Questions.