Your SlideShare is downloading. ×
0
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Impact 2009 1783 Achieving Availability With W A Sz User Experience

1,598

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,598
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
31
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Session 1783 – Part II <ul><li>Achieving High Availability with WebSphere on z/OS - user experience </li></ul><ul><li>Presented by Elena Nanos </li></ul><ul><li>IBM Certified Advanced System Administrator - WebSphere Application Server ND V6.1 </li></ul><ul><li>IBM Certified Solution Expert - CICS Web Enablement </li></ul><ul><li>IBM Certified System Specialist - WebSphere MQSeries </li></ul><ul><li>Email - [email_address] </li></ul><ul><li>Health Care Service Corporation </li></ul><ul><li>WebSphere Engineering and Support services </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 1
  • 2. Why WebSphere on z/OS? <ul><li>WebSphere on z/OS has been selected as a preferred platform to support development and deployment of new Java mission-critical Applications for the following reasons: </li></ul><ul><li>z/OS Hardware, Software, Storage, and Network are all designed for maximum application availability </li></ul><ul><li>WebSphere on z/OS is designed to support very high transactional volume </li></ul><ul><li>WebSphere on z/OS provides highest Quality of Service: </li></ul><ul><li>- Performance </li></ul><ul><li>- Scalability </li></ul><ul><li>- Recovery/failover capability </li></ul><ul><li>- High Availability </li></ul><ul><li>- Stability </li></ul><ul><li>- Manageability </li></ul><ul><li>- Maintainability </li></ul><ul><li>- Security/Integrity </li></ul><ul><li>By using WebSphere on z/OS you can minimize the number of physical tiers to get to backend data </li></ul><ul><li>Use of single tier removes Network layer and additional overhead associate with it </li></ul><ul><li>Tight integration with DB2, MQ and CICS </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 2
  • 3. Features and Technology Unique to z/OS <ul><li>Server Architecture </li></ul><ul><li>- Control/Servant Region Split </li></ul><ul><li>- Multiple Servant Region </li></ul><ul><li>Workload Management </li></ul><ul><li>- Leverages Workload Manager (WLM) </li></ul><ul><li>- WLM/RMF integration </li></ul><ul><li>- Work classified according to importance &amp; performance goals </li></ul><ul><li>- Work is selected from WLM queue and managed to goal </li></ul><ul><li>- Provides Failover to available Servants </li></ul><ul><li>- Automatic servant restart after an outage </li></ul><ul><li>- Automatic startup of additional servants, as needed, based on Policies </li></ul><ul><li>WebSphere on z/OS Network Deployment Clustering across z/OS LPARs </li></ul><ul><li>- Horizontal scaling for increased throughput </li></ul><ul><li>- Continuous availability &amp; fail-over </li></ul><ul><li>MQ Queue Sharing using Shared Queues across LPARs and XM memory communication for optimum performance </li></ul><ul><li>DB2 Data Sharing across LPARs </li></ul><ul><li>SYSPlex Distributor - w orkload management and distribution across multiple systems </li></ul><ul><li>Coupling Facility - high-speed inter-system communication, used with MQ Queue Sharing &amp; DB2 Data sharing </li></ul><ul><li>Resource Recovery Services - required for 2-phase commits </li></ul><ul><li>zSeries Application Assist Processor (zAAP) - specialty assist processor dedicated exclusively to execution of Java workloads under z/OS </li></ul><ul><li>Mainframe security </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 3
  • 4. <ul><li>Implemented very solid, scalable, high availability WebSphere on z/OS infrastructure that satisfies data integrity, system performance and system availability objectives. </li></ul><ul><li>Architected and established ‘best practice’ WebSphere on z/OS implementation using Network Deployment Cluster configuration, crossing LPARs, with proven fail over capabilities. </li></ul><ul><li>This scalable design allows us to quickly adapt to new business requirements and growth. </li></ul><ul><li>Established excellent standards, naming conventions and procedures for building and supporting WebSphere on z/OS infrastructure. </li></ul><ul><li>Developed and exercised WebSphere on z/OS infrastructure failover and error recovery plan. </li></ul><ul><li>Automated startup and shutdown at IPL time, notification of various issues related to system availability, infrastructure and application health check, monitoring commands and deployment in non-Prod environments. </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 4 Infrastructure Design with Focus on High Availability
  • 5. WebSphere on z/OS Failover and Recovery <ul><li>Our WebSphere z/OS infrastructure can handle the following outages: </li></ul><ul><li>WebSphere on z/OS servant, server or Node down on one LPAR – using MQ Queue Sharing, requests will automatically go to WebSphere on z/OS server that is available on the other LPAR. </li></ul><ul><li>MQ down on one LPAR – we make use of Shared Queues, where one physical copy of the queue exists in CF or DB2. If one MQ Queue Manager is unavailable, WebSphere on z/OS server (on either side of the Cluster) can get data from Shared Queue via available MQ and can send reply back to CICS, where request initiated. </li></ul><ul><li>LPAR down – if one of 2 LPARs in the Cluster is down WebSphere on z/OS can continue processing, without any manual intervention. With our current Application design, request can come from WebSphere or CICS on the LPAR that is up . </li></ul><ul><li>TCP/IP down on one LPAR – using MQ Queue Sharing, requests will automatically go to WebSphere on z/OS server that is available on the other LPAR. </li></ul><ul><li>DB2 down on one LPAR – we make use of JDBC Type 4 driver and if one DB2 is down request continue processing. </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 5
  • 6. HCSC WebSphere on z/OS environments <ul><ul><ul><li>Unit Test </li></ul></ul></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 6 Unit and String Integration Test <ul><ul><ul><li>Integrated Test Build </li></ul></ul></ul>System Integration Test User Acceptance Integrated Acceptance Load and Performance <ul><ul><ul><li>Production </li></ul></ul></ul>Development Path to Production Our WebSphere on z/OS infrastructure has been architected to support development, testing and Production deployment in the following environments:
  • 7. Sample WebSphere on z/OS Cells configuration (naming convention has been changed to protect our environment) Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 7
  • 8. Failover - Servant Outage <ul><li>LPAR A </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 8 LPAR B Q3LP5 Cluster Undispatched work <ul><li>The z/OS WebSphere architecture consists of a clustered controller and a server regions per LPAR. Each server on each part of the cluster consists of several servant regions. </li></ul><ul><li>In production we have up to 10 servants per LPAR (min=5, max=10). </li></ul><ul><li>Server stays up during the servant outage. Workload manager works very closely with WebSphere on z/OS and detects the thread going down within the JVM and creates a new servant automatically. </li></ul><ul><li>This architecture spans the LPARs within the Cluster, so there is automatic failover from one LPAR to another. </li></ul>
  • 9. Minimizing Effects of Timeout <ul><li>WAS timeouts sometimes are unavoidable, when long running query is running or Network problem occurs. To avoid punishing &amp;quot;innocent bystanders&amp;quot; along with guilty requests, WebSphere on z/OS allows you to attempt to defer terminating a servant until its other in-flight requests have completed. You can do this by setting the variable control_region_timeout_delay to the number of seconds that the server is to wait after a timeout before abending the servant. </li></ul><ul><li>If the server_use_wlm_to_queue_work property is set to 0, during the time period specified for the control_region_timeout_delay property, work requests that were not yet dispatched but were queued without affinity to the terminating servant, are requeued to another available servant after the servant termination process completes . </li></ul><ul><li>To minimize the effects of timeouts we have added the following WebSphere variables: </li></ul><ul><li>- server_use_wlm_to_queue_work set to 0 (default is 1) </li></ul><ul><li>- control_region_timeout_delay set to 5 seconds (default is 0) </li></ul><ul><li>For more details please reference: </li></ul><ul><li>- Techdoc WP101233 titled &amp;quot; Configuration Options for Handling Application Dispatch Timeouts ” . </li></ul><ul><li>- WebSphere on z/OS Infocenter under ‘ Application server custom properties that are unique for the z/OS platform ’. </li></ul><ul><li>- PK60264: Documentation clarification on request processing during CONTROL_REGION_TIMEOUT_DELAY </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 9
  • 10. Setting Read timeout on Client Call <ul><li>MDB timeouts should be avoided whenever possible. </li></ul><ul><li>Detect misbehaved thread within the Application. Making use of this approach increases system availability and prevents servant restarts when timeout occurs. </li></ul><ul><li>General recommendations, when setting timeouts at Application level: </li></ul><ul><li>- Value set should be lower than timeout value set at WebSphere on z/OS Controller </li></ul><ul><li>- Timeouts values should be set to min 75% to max 200% of expected average Application backend response time . </li></ul><ul><li>Example below is from http:// forum.springframework.org/showthread.php?t=25577 and it shows how to set timeout on Axis client code via JaxRpcPortProxyFactoryBean – </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 10 import org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean; import javax.xml.rpc.Stub; public class MyJaxRpcPortProxyFactoryBean extends JaxRpcPortProxyFactoryBean { private static final String TIMEOUT_PROPERTY_KEY = &amp;quot; axis.connection.timeout &amp;quot;; protected void preparePortStub(Stub stub) { super.preparePortStub(stub); stub._setProperty(TIMEOUT_PROPERTY_KEY, new Integer(60)); System.out.println(&amp;quot;In the preparePortStub method&amp;quot;);
  • 11. Setting the queryTimeout on JDBC calls <ul><li>MDB timeouts can be caused by SQL call that takes too long to complete due to: </li></ul><ul><li>- Database being unavailable </li></ul><ul><li>- Locks on data not being timely released, causing DB2 deadlocks or timeouts </li></ul><ul><li>- Poorly written long running query </li></ul><ul><li>- TCP/IP connectivity issues, when using JDBC Type 4 driver. </li></ul><ul><li>Setting queryTimeout on JDBC calls within Application code can prevent MDB timeouts. </li></ul><ul><li>Below is an example of how to set queryTimeout using Spring JDBC Template - </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 11 &lt;bean id=&amp;quot;errorDao&amp;quot; parent=&amp;quot;baseDaoProxyParent&amp;quot;&gt; &lt;property name=&amp;quot;target&amp;quot;&gt; &lt;bean class=&amp;quot;com.appl.integration.daoimpl.jdbc.ErrorDaoJdbcImpl&amp;quot; parent=&amp;quot;applBaseDaoJdbcParent&amp;quot;&gt; &lt;property name=&amp;quot;sqlMap&amp;quot; ref=&amp;quot;sqlMap&amp;quot;/&gt; &lt;property name=&amp;quot; queryTimeout&amp;quot; value=“60 &amp;quot;/&gt; &lt;property name=&amp;quot;ignoreWarnings&amp;quot; value=&amp;quot;true&amp;quot; /&gt; &lt;/bean&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id=&amp;quot;baseDaoProxyParent&amp;quot; class=&amp;quot;org.springframework.aop.framework.ProxyFactoryBean&amp;quot; abstract=&amp;quot;true&amp;quot;&gt; …
  • 12. Health Check Procedures <ul><li>Pro-active approach in detecting issues early and preventing problem whenever possible, to ensure high availability. </li></ul><ul><li>Automated Infrastructure Health Check across all environments, which reports on the following : </li></ul><ul><li>- Cell infrastructure Status, Deployment Manager, Nodes </li></ul><ul><li>- Application Servers Status </li></ul><ul><li>- MQ Listener ports status </li></ul><ul><li>- Application status </li></ul><ul><li>- WebSphere on z/OS HFS files status </li></ul><ul><li>Automated Application check procedure to verify environment after any Application change and to test impact of system tuning changes </li></ul><ul><li>- MQ connectivity and MDB functionality is tested </li></ul><ul><li>- JDBC calls are exercised </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 12
  • 13. <ul><li>The following alerts are sent automatically via Email to WebSphere z/OS support team: </li></ul><ul><li>WebSphere on z/OS started task went down </li></ul><ul><li>Heartbeat check of all STCs up/down status </li></ul><ul><li>SVC dump is taken for any WebSphere on z/OS started task </li></ul><ul><li>High CPU usage of any WebSphere on z/OS started task </li></ul><ul><li>WebSphere on z/OS started task is down for over 10 minutes </li></ul><ul><li>No WebSphere on z/OS HFS is mounted at expected mount point </li></ul><ul><li>95%+ WebSphere on z/OS HFS space allocation (can be altered as needed) </li></ul><ul><li>WebSphere on z/OS connection to MQ terminated, usually due to MDB timeout </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 13 Alerts Auto Notification
  • 14. Understanding Native storage usage <ul><li>You can only specify a limited amount for User Region size (1,600 Meg in this example), because of z/OS system storage allocation in 31 bit mode and shared memory used by other Applications. </li></ul><ul><li>Note: Drastically higher limits can be set with running WebSphere in 64 bit mode </li></ul><ul><li>JVM size in allocated out of User Region size , leaving less that 1GB available in Extended Local System Queue Area (ELQSA) to load the following : </li></ul><ul><ul><li>MQ, DB2 &amp; CICS connectors storage </li></ul></ul><ul><ul><li>Cached Classes </li></ul></ul><ul><ul><li>JITed code </li></ul></ul><ul><ul><li>JNI objects </li></ul></ul><ul><ul><li>Application classes copied by LE into Native Heap </li></ul></ul><ul><li>Each time your Applications are stopped and restarted, without restarting the server, the classes get reloaded. </li></ul><ul><li>Storage usage is also related to the volume and number of threads allocated to MQ, DB2 &amp; CICS. </li></ul><ul><li>Depleting ELSQA storage will result in 878-10 abend for WebSphere server. </li></ul><ul><li>You need to ensure that enough virtual storage is left in ELSQA . </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 14
  • 15. Memory Leak issue using ThreadLocals <ul><li>ThreadLocal class doesn&apos;t work well with Thread pools in J2EE environment </li></ul><ul><li>We observed memory leaks in Native Storage caused by using ThreadLocal threads, which do not get cleanup automatically in MVS Native Heap . ThreadLocal does not interact well with thread pooling in WebSphere Application servers. Since there is no Garbage Collection in MVS Native Heap, classes loaded by ThreadLocal threads can remain in storage after Application is stopped. This problem is compounded by Class loader, when ThreadLocal classes are reloaded each time Application is restarted, without restarting the server. </li></ul><ul><li>Best coding practice recommendations </li></ul><ul><li>To avoid Native Storage leaking, which depletes ELSQA storage, you have the following options: </li></ul><ul><li>Use Thread pool threads, which are managed by WebSphere on z/OS </li></ul><ul><li>Avoid the use of ThreadLocals threads </li></ul><ul><li>Clear all ThreadLocals before returning control from an EJB or Servlet invocation </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 15
  • 16. Finding Java Threads outside of WebSphere on z/OS management Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 16 Dump Analyzer can be used to find Threads that are allocated outside of WebSphere Thread pool, as shown in example below -
  • 17. Reference material <ul><li>I have published an article in February/March issue tilted – </li></ul><ul><li>“ Hidden Gems: Free IBM Tools to Help You Manage WebSphere on z/OS” </li></ul><ul><li>This article covers the following: </li></ul><ul><li>Support Issues: Lessons Learned </li></ul><ul><li>Memory Leak issue using ThreadLocals </li></ul><ul><li>Best coding practice recommendations </li></ul><ul><li>Clearing storage when Threadlocal is used </li></ul><ul><li>Finding Java Threads outside of WebSphere on z/OS management </li></ul><ul><li>Debugging timeouts </li></ul><ul><li>svcdump.jar utility </li></ul><ul><li>Minimizing the effects of timeouts </li></ul><ul><li>Setting timeouts at Application level </li></ul><ul><li>Garbage Collection Policies With Java 5.0 </li></ul><ul><li>FFDC Logs </li></ul><ul><li>Summary of Tools Available in IBM Support Assistant </li></ul><ul><li>Tivoli Performance Viewer (TPV) </li></ul><ul><li>z/OS Console commands </li></ul><ul><li>WebSphere on z/OS V7.0 enhancements </li></ul><ul><li>Web link - http://zjournal.com/index.cfm?section=article&amp;aid=1142 </li></ul>Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 17
  • 18. Questions Session 1783 – Part II Achieving High Availability with WebSphere on z/OS - user experience 18 ?

×