SlideShare a Scribd company logo
1 of 38
Rohit Kelapure IBM Advisory Software Engineer  29 September 2011 Server Resiliency - Debugging Java deployments
Introduction to Speaker – Rohit Kelapure Responsible for the resiliency of  WebSphere Application Server Team Lead and architect of Caching & Data replication features in WebSphere Called upon to hose down fires & resolve critical situations Customer advocate for large banks  Active blogger All Things WebSphere Apache Open Web Beans committer  Java EE, OSGI & Spring Developer kelapure@us.ibm.com kelapure@gmail.com Linkedin http://twitter.com/#!/rkela 2
Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.  WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.  ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT.  YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES. ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.  IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.  NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:  - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 3
Copyright and Trademarks © IBM Corporation 2011. All Rights Reserved.  IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and registered in many jurisdictions worldwide.  Other product and service names might be trademarks of IBM or other companies.  A current list of IBM trademarks is available on the Web – see the IBM “Copyright and trademark information” page at URL:  www.ibm.com/legal/copytrade.shtml 4
Outline Server Resiliency Fundamentals Common JVM Problems Protecting your JVM Hung thread detection, Thread Interruption, Thread hang recovery Memory leak detection, protection & action Scenario based problem resolution Tooling Eclipse Memory Analyzer Thread Dump Analyzer Garbage Collection and Memory Visualizer 5
Resiliency Property of a material that can absorb external energy when it is forced to deform elastically, and then be able to recover to its original form and release the energy 6
Server Resiliency Concepts 7 October 4, 2011 Explicit Messaging Distributed Shared memory – Better Consistency Message Passing – Loose Coupling Uniform Interface E.g. World Wide Web Better scalability, reusability and reliability  Data, process and other forms of computations identified by one mechanism  Semantics of operations in messages for operating on the data are unified Self Management Composed of self-managing components. Managed element, managers, sensors & effectors e.g. TCP/IP Congestion Control Redundancy (Data and processing) Create Replicas High cost of initialization and reconfiguration Redundant elements need to be synchronized from time to time Partition Splitting the data into smaller pieces and storing them in distributed fashion Allows for parallelization & divide and conquer Partial failure isolation Virtualization Functionalities of processing and data element virtualized as a service Loose coupling between system and consumed services Integration by enforcing explicitly boundary and schema-based interfaces Decentralized Control  High communication overhead of centralized control for a system of heavy redundancy Sometimes trapped in locally optimized solutions Fixing issues requires shutting down the entire system e.g. AWS outage
Most common JVM Problem Scenarios 8 October 4, 2011
Thread Hangs Threading and synchronization issues are among the top 5 application performance challenges too aggressive with shared resources causes data inconsistencies too conservative leads to too much contention between threads  Application unresponsiveness  Adding users / threads /CPUs causes app slow down (less throughput, worse response) High lock acquire times & contention Race conditions, deadlock, I/O under lock Tooling is needed to rescue applications and the JVM from itself  Identify these conditions  If possible remedy them in the short term for server resiliency 9 October 4, 2011
JVM Hung Thread Detection  Every X seconds  an alarm thread wakes up and iterates over all managed thread pools.  Subtract the "start time" of the thread from the current time, and passes it to a monitor.  Detection policy then determines based on the available data if the thread is hung  Print stack trace of the hung thread 10 October 4, 2011
Thread Interruption 101  Thread.stop stops thread by throwing ThreadDeath exception * Deprecated Thread.interrupt():  Cooperative mechanism for a thread to signal another thread that it should, at its convenience and if it feels like it, stop what it is doing and do something else. Interruption is usually the most sensible way to implement task cancellation.  Because each thread has its own interruption policy, you should not interrupt a thread unless you know what interruption means to that thread. Any method sensing interruption should Assume current task is cancelled & perform some task‐specific cleanup Exit as quickly and cleanly as possible ensuring that callers are aware of cancellation  Propagate the exception, making your method an interruptible blocking method, to throw new InterruptedException() Restore the interruption status so that code higher up on the call stack can deal with it Thread.currentThread().interrupt() Only code that implements a thread's interruption policy may swallow an interruption request.  11 October 4, 2011
Interrupting threads 12
13 October 5, 2011 CancellingThreads
Dealing with Non‐interruptible Blocking Many blocking library methods respond to interruption by returning early and throwing InterruptedException Makes it easier to build tasks that are responsive to cancellation  Lock.lockInterruptibly Thread.sleep, Thread.wait Thread.notify Thread.join Not all blocking methods or blocking mechanisms are responsive to interruption if a thread is blocked performing synchronous socket I/O, interruption has no effect other than setting the thread's interrupted status If a thread is blocked waiting for an intrinsic lock, there is nothing you can do to stop short of ensuring that it eventually acquires the lock 14 October 4, 2011
Thread Hang Recovery – Technique  Application specific hacks for thread hang recovery Byte code instrumentation Transform the concrete subclasses of the abstract classes InputStream& OutputStreamto make the socket I/O operations interruptible.  Transform an application class so that every loop can be interrupted by invoking Interrupter.interrupt(Thread, boolean) Transform a monitorenter instruction and a monitorexit instruction so that the wait at entering into a monitor is interruptible http://www.ibm.com/developerworks/websphere/downloads/hungthread.html 15
Memory Leaks Leaks come in various types, such as Memory leaks Thread and ThreadLocal leaks ClassLoader leaks System resource leaks  Connection leaks Customers want to increase application uptime without cycling the server.  Frequent application restarts without stopping the server. Frequent redeployments of the application result in OOM errors  What do we have today  Offline post-mortem analysis of a JVM heap. Tools like Jrockit Mission Control, MAT. IEMA are the IBM Extensions for Memory Analyzer Runtime memory leak detection using JVMTI and PMI (Runtime Performance Advisor) We don’t have application level i.e. top down memory leak detection and protection Leak detection by looking at suspect patterns in application code 16 October 4, 2011
ClassLoader Leaks 101 A class is uniquely identified by Its name + The class loader that loaded it Class with the same name can be loaded multiple times in a single JVM, each in a different class loader Web containers use this for isolating web applications Each web application gets its own class loader Reference Chain An object retains a reference to the class it is an instance of A class retains a reference to the class loader that loaded it The class loader retains a reference to every class it loaded Retaining a reference to a single object from a web application pins every class loaded by the web application These references often remain after a web application reload With each reload, more classes get pinned ultimately leading to an OOM 17 October 4, 2011
Tomcat pioneered approach - Leak Prevention  JRE triggered leak  Singleton / static initializer Can be a Thread Something that won’t get garbage collected Retains a reference to the context class loader when loaded If web application code triggers the initialization The context class loader will be web application class loader A reference is created to the web application class loader This reference is never garbage collected Pins the class loader (and hence all the classes it loaded) in memory Prevention with a DeployedObjectListener Calling various parts of the Java API that are known to retain a reference to the current context class loader Initialize these singletons when the Application Server’s class loader is the context class loader 18 October 5, 2011
Leak Detection Application Triggered Leaks ClassLoader  Threads ThreadLocal  JDBC Drivers Non Application RMI Targets Resource Bundle Static final references InstrospectionUtils Loggers Prevention Code executes when a web application is stopped, un-deployed or reloaded Check, via a combination of standard API calls and some reflection tricks, for known causes of memory leaks 19 October 4, 2011
Memory leak detection console 20 October 4, 2011
What is wrong with my application  …? Why does my application run slow every time I do X ? Why does my application have erratic response times ?   Why am I getting Out of Memory Errors ? What is my applications memory footprint ? Which parts of my application are CPU intensive ? How did my JVM vanish without a trace ? Why is my application unresponsive ? What monitoring do I put in place for my app. ? 21 October 4, 2011
What is your JVM up to ? Windows style task manager for displaying thread status and allow for their recovery & interruption Leverage the ThreadMXBean API in the JDK to display thread information https://github.com/kelapure/dynacache/blob/master/scripts/AllThreads.jsphttps://github.com/kelapure/dynacache/blob/master/scripts/ViewThread.jsp 22 October 4, 2011
Application runs slow when I do XXX ? Understand impact of activity on components Look at the thread & method profiles  IBM Java Health Center  Visual VM Jrockit Mission Control JVM method & dump trace - pinpoint performance problems.  Shows entry & exit  times of any Java method Method to trace to file for all methods in tests.mytest.package Allows taking javadump, heapdump, etc when a method is hit Dump javacore when method testInnerMethod in an inner class TestInnerClass of a class TestClass is called Use Btrace, -Xtrace * –Xdump  to trigger dumps on a range of events gpf, user, abort, fullgc, slow, allocation, thrstop, throw … Stack traces, tool launching 23 October 4, 2011
Application has erratic response times ? Verbose gc should be enabled by default <2% impact on performance VisualGC, GCMV &PMAT : Visualize GC output   In use space after GC Positive gradient over time indicates memory leak Increased load (use for capacity plan)  Memory leak (take HDs for PD.)  Choose the right GC policy  Optimized for “batch” type applications, consistent allocation profile Tight responsiveness criteria, allocations of large objects High rates of object “burn”, large # of transitional objects 12, 16 core SMP systems with allocation contention (AIX only) GC overhead > 10%  wrong policy | more tuning Enable compressed references for 64 bit JVM  24 October 5, 2011
Out Of Memory Errors ? JVM Heap sized incorrectly GC adapts heap size to keep occupancy [40, 70]% Determine heap occupancy of the app. under load Xmx = 43% larger than max. occupancy of app. For 700MB occupancy , 1000MB Max. heap is reqd. (700 +43% of 700) Analyze heapdumps & system dumps with tools like Eclipse Memory Analyzer Lack of Java heap or Native heap Eclipse Memory Analyzer and IBM extensions  Finding which methods allocated large objects Prints stacktrace for all objects above 1K Enable Java Heap and Native heap monitoring  JMX and metrics output by JVM Classloader exhaustion 25 October 4, 2011
Applications memory footprint ? HPROF – profiler shipped with JDK – uses JVMTI  Analysis of memory usage -Xrunhprof:heap=all  Performance Inspector tools - JPROF Java Profiling Agent Capture state of the Java Heap later processed by HDUMP Group a system dump by classloader since each app has its own classloader, you can get accurate information on how much heap each application is taking up Use MAT to investigate heapdumps & system dumps  Find large clumps, Inspect those objects, What retains them ? Why is this object not being garbage collected –  List Objects > incoming refs,  Path to GC roots,  Immediate dominators  Limit analysis to a single application in a JEE environment - Dominator tree grouped by ClassLoader Dominator tree grouped by Class Loader Set of objects that can be reclaimed if we could delete X -  Retained  Size Graphs  Retained  Size Graphs  Traditional memory hogs  like HTTPSession, Cache - Use Object Query Language (OQL Use Object Query Language (OQL) 26 October 4, 2011
Using Javacores for Troubleshooting Javacores are often the most critical piece of information to resolve a hang, high CPU, crash and sometimes memory problems A Javacore is a text file that contains a lot of useful information The date, time, java™ version, full command path and arguments All the threads in the JVM, including thread state, priority, thread ID, name Thread call stacks Javacores can be generated automatically or on demand Automatically when an OutOfMemoryException is thrown On demand with “kill -3 <pid>”  Message to the SystemOut when a javacore is generated 27 "WebContainer : 537" (TID:0x088C7200, sys_thread_t:0x09C19F00, state:CW, native ID:0x000070E8) prio=5    at java/net/SocketInputStream.socketRead0(Native Method)    at java/net/SocketInputStream.read(SocketInputStream.java:155)    at oracle/net/ns/Packet.receive(Bytecode PC:31)    at oracle/net/ns/DataPacket.receive(Bytecode PC:1)    at oracle/net/ns/NetInputStream.read(Bytecode PC:33)    at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1123)    at oracle/jdbc/driver/T4C8Oall.receive(T4C8Oall.java:480)    at oracle/jdbc/driver/T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813)    at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)    at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415) at com/ibm/commerce/user/objects/EJSJDBCPersisterCMPDemographicsBean_2bcaa7a2.load()    at com/ibm/ejs/container/ContainerManagedBeanO.load(ContainerManagedBeanO.java:1018)    at com/ibm/ejs/container/EJSHome.activateBean(EJSHome.java:1718)
CPU intensive parts of the app? ThreadDumps or Javacores- Poor mans profiler Periodic javacores Thread analysis – using the Thread Monitor Dump Analyzer tool High CPU is typically diagnosed by comparing two key pieces of information Using Javacores, determine what code the threads are executing Gather CPU usage statistics by thread For each Javacore compare the call stacks between threads Focus first on Request processing threads first Are all the threads doing similar work?  Are the threads moving ? Collect CPU statistics per thread Is there one thread consuming most of the CPU? Are there many active threads each consuming a small percentage of CPU? High CPU due to excessive garbage collection ? If this is a load/capacity problem then use HPROF profiler   -Xrunhrof:cpu=samples, -Xrunhprof:cpu=time 28 October 4, 2011
Diagnosis - Hangs Often hangs are due to unresponsive synchronous requests SMTP Server, Database, Map Service, Store Locator, Inventory, Order processing, etc 3XMTHREADINFO "Servlet.Engine.Transports : 11" (TID:0x7DD38040, sys_thread_t:0x44618828, state:R, native ID:0x4A9F) prio=54XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.SQLExecute()4XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(DB2PreparedStatement.java)4XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeQuery(DB2PreparedStatement.java()4XESTACKTRACE     at ... 3XMTHREADINFO "Servlet.Engine.Transports : 12" (TID:0x7DD37FC0, sys_thread_t:0x4461BDA8, state:R, native ID:0x4BA0) prio=54XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.SQLExecute()4XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(DB2PreparedStatement.java)4XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeQuery(DB2PreparedStatement.java()4XESTACKTRACE     at ... 3XMTHREADINFO "Servlet.Engine.Transports : 13" (TID:0x7DD34C50, sys_thread_t:0x4465B028, state:R, native ID:0x4CCF) prio=54XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.SQLExecute()4XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(DB2PreparedStatement.java)4XESTACKTRACE     at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeQuery(DB2PreparedStatement.java() Not all hangs are waiting on an external resource A JVM can hang due to a synchronization problem - One thread blocking several others 29 3XMTHREADINFO "Servlet.Engine.Transports : 11" (TID:0x7DD38040, sys_thread_t:0x44618828, state:R, native ID:0x4A9F) prio=53LKMONOBJECT  com/ibm/ws/cache/Cache@0x65FB8788/0x65FB8794: owner "Default : DMN0" (0x355B48003LKWAITERQ       Waiting to enter:3LKWAITER           "WebContainer : 0" (0x3ACCD000)3LKWAITER           "WebContainer : 1" (0x3ACCCB00)3LKWAITER           "WebContainer : 2" (0x38D68300)3LKWAITER           "WebContainer : 3" (0x38D68800)
How did my JVM vanish without trace ? JVM Process Crash Usual Suspects  Bad JNI calls,  Segmentation violations,  Call Stack Overflow Native memory leaks - Object allocation fails with sufficient space in the JVM heap Unexpected OS exceptions (out of disk space, file handles),  JIT failures Monitor the OS process size  Runtime check of JVM memory allocations – Xcheck:memory Native memory usage - Create a core dump on an OOM JNI code static analysis -Xcheck:jni  (errors, warnings, advice) GCMV  provides scripts and graphing for native memory Windows “perfmon“,  Linux “ps” & AIX “svmon”  Find the last stack of native code executing on the thread during the crash The signal info (1TISIGINFO) will show the Javacore was created due to a crash Signal 11 (SIGSEGV) or GPF 30 October 4, 2011
What do I monitor ? 31 October 4, 2011
Top  Malpractices 32 October 4, 2011
Support Assistant  Workbench to help with Problem Determination 33 October 4, 2011
One stop shop for tools to analyze JVM issues 34 October 4, 2011
Tools 35 October 4, 2011
Runtime Serviceability aids Troubleshooting panels in the administration console Performance Monitoring Infrastructure metrics  Diagnostic Provider Mbeans Dump Configuration, State and run self-test Application Response Measurement/Request Metrics  Follow transaction end-to-end and find bottlenecks Trace logs & First Failure Data Capture Runtime Performance Advisors Memory leak detection, session size, … Specialized tracing and Runtime checks Tomcat Classloader Leak Detection Session crossover, Connection leak, ByteBuffer leak detection  Runaway CPU thread protection 36 October 4, 2011
References	 Java theory and practice: Dealing with InterruptedException http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html Architectural design for resilience http://dx.doi.org/10.1080/17517570903067751 IBM Support Assistant http://www-01.ibm.com/software/support/isa/download.html How Customers get into trouble http://www-01.ibm.com/support/docview.wss?uid=swg27008359 37
Q&A Thank You 38 October 4, 2011

More Related Content

What's hot

Introduction To JBoss Seam 2.1
Introduction To JBoss Seam 2.1Introduction To JBoss Seam 2.1
Introduction To JBoss Seam 2.1Priyatam M
 
Why ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ HargraveWhy ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ Hargravemfrancis
 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Hirofumi Iwasaki
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyDavid Delabassee
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015Edward Burns
 
JavaFX and JEE 7
JavaFX and JEE 7JavaFX and JEE 7
JavaFX and JEE 7Vijay Nair
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishArun Gupta
 
Six simple steps to unit testing happiness
Six simple steps to unit testing happinessSix simple steps to unit testing happiness
Six simple steps to unit testing happinessSteven Feuerstein
 
Oracle Solaris 11 lab agenda
Oracle Solaris 11 lab agendaOracle Solaris 11 lab agenda
Oracle Solaris 11 lab agendaPavel Anni
 
TDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit HappensTDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit HappensJackson F. de A. Mafra
 
Real World Java Compatibility (Tim Ellison)
Real World Java Compatibility (Tim Ellison)Real World Java Compatibility (Tim Ellison)
Real World Java Compatibility (Tim Ellison)Chris Bailey
 
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6Rakuten Group, Inc.
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXBruno Borges
 
Oracle Solaris 11 Education
Oracle Solaris 11 EducationOracle Solaris 11 Education
Oracle Solaris 11 EducationPavel Anni
 

What's hot (18)

Introduction To JBoss Seam 2.1
Introduction To JBoss Seam 2.1Introduction To JBoss Seam 2.1
Introduction To JBoss Seam 2.1
 
Why ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ HargraveWhy ClassforName Sucks - BJ Hargrave
Why ClassforName Sucks - BJ Hargrave
 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7
 
Java 101
Java 101Java 101
Java 101
 
EJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and StrategyEJB and CDI - Alignment and Strategy
EJB and CDI - Alignment and Strategy
 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
 
PROGRAMMING IN JAVA
PROGRAMMING IN JAVAPROGRAMMING IN JAVA
PROGRAMMING IN JAVA
 
JavaFX and JEE 7
JavaFX and JEE 7JavaFX and JEE 7
JavaFX and JEE 7
 
PL/SQL Guilty Pleasures
PL/SQL Guilty PleasuresPL/SQL Guilty Pleasures
PL/SQL Guilty Pleasures
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
 
Six simple steps to unit testing happiness
Six simple steps to unit testing happinessSix simple steps to unit testing happiness
Six simple steps to unit testing happiness
 
Oracle Solaris 11 lab agenda
Oracle Solaris 11 lab agendaOracle Solaris 11 lab agenda
Oracle Solaris 11 lab agenda
 
TDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit HappensTDC 2015 - POA - Trilha PHP - Shit Happens
TDC 2015 - POA - Trilha PHP - Shit Happens
 
Real World Java Compatibility (Tim Ellison)
Real World Java Compatibility (Tim Ellison)Real World Java Compatibility (Tim Ellison)
Real World Java Compatibility (Tim Ellison)
 
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
[RakutenTechConf2013] [E-3] Financial Web System with Java EE 6
 
WoMakersCode 2016 - Shit Happens
WoMakersCode 2016 -  Shit HappensWoMakersCode 2016 -  Shit Happens
WoMakersCode 2016 - Shit Happens
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
 
Oracle Solaris 11 Education
Oracle Solaris 11 EducationOracle Solaris 11 Education
Oracle Solaris 11 Education
 

Similar to Debugging java deployments_2

Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyWill Gage
 
Classloader leak detection in websphere application server
Classloader leak detection in websphere application serverClassloader leak detection in websphere application server
Classloader leak detection in websphere application serverRohit Kelapure
 
Spring framework
Spring frameworkSpring framework
Spring frameworksrmelody
 
03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book SupplementChuong Nguyen
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyRodney Barlow
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuningJerry Kurian
 
香港六合彩 &raquo; SlideShare
香港六合彩 &raquo; SlideShare香港六合彩 &raquo; SlideShare
香港六合彩 &raquo; SlideShareyayao
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seamashishkulkarni
 
Fundamentals of JAVA
Fundamentals of JAVAFundamentals of JAVA
Fundamentals of JAVAKUNAL GADHIA
 
JAVA INTRODUCTION
JAVA INTRODUCTIONJAVA INTRODUCTION
JAVA INTRODUCTIONProf Ansari
 
JAVA INTRODUCTION
JAVA INTRODUCTIONJAVA INTRODUCTION
JAVA INTRODUCTIONProf Ansari
 
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogicHTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogicOracle
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability BpChris Adkin
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by OracleAkash Pramanik
 
Common ASP.NET Design Patterns - Telerik India DevCon 2013
Common ASP.NET Design Patterns - Telerik India DevCon 2013Common ASP.NET Design Patterns - Telerik India DevCon 2013
Common ASP.NET Design Patterns - Telerik India DevCon 2013Steven Smith
 

Similar to Debugging java deployments_2 (20)

Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
Classloader leak detection in websphere application server
Classloader leak detection in websphere application serverClassloader leak detection in websphere application server
Classloader leak detection in websphere application server
 
bjhbj
bjhbjbjhbj
bjhbj
 
Virtual Classroom
Virtual ClassroomVirtual Classroom
Virtual Classroom
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
香港六合彩 &raquo; SlideShare
香港六合彩 &raquo; SlideShare香港六合彩 &raquo; SlideShare
香港六合彩 &raquo; SlideShare
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seam
 
Fundamentals of JAVA
Fundamentals of JAVAFundamentals of JAVA
Fundamentals of JAVA
 
JAVA INTRODUCTION
JAVA INTRODUCTIONJAVA INTRODUCTION
JAVA INTRODUCTION
 
JAVA INTRODUCTION
JAVA INTRODUCTIONJAVA INTRODUCTION
JAVA INTRODUCTION
 
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogicHTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Month 3 report
Month 3 reportMonth 3 report
Month 3 report
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability Bp
 
Ebs performance tuning session feb 13 2013---Presented by Oracle
Ebs performance tuning session  feb 13 2013---Presented by OracleEbs performance tuning session  feb 13 2013---Presented by Oracle
Ebs performance tuning session feb 13 2013---Presented by Oracle
 
Java8 - Under the hood
Java8 - Under the hoodJava8 - Under the hood
Java8 - Under the hood
 
Common ASP.NET Design Patterns - Telerik India DevCon 2013
Common ASP.NET Design Patterns - Telerik India DevCon 2013Common ASP.NET Design Patterns - Telerik India DevCon 2013
Common ASP.NET Design Patterns - Telerik India DevCon 2013
 

More from Rohit Kelapure

API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice?  API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice? Rohit Kelapure
 
External should that be a microservice
External should that be a microserviceExternal should that be a microservice
External should that be a microserviceRohit Kelapure
 
Should That Be a Microservice ?
Should That Be a Microservice ?Should That Be a Microservice ?
Should That Be a Microservice ?Rohit Kelapure
 
Travelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformTravelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformRohit Kelapure
 
SpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutesSpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutesRohit Kelapure
 
Migrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixMigrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixRohit Kelapure
 
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...Rohit Kelapure
 
A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix Rohit Kelapure
 
Liberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_steLiberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_steRohit Kelapure
 
Dynacache in WebSphere Portal Server
Dynacache in WebSphere Portal ServerDynacache in WebSphere Portal Server
Dynacache in WebSphere Portal ServerRohit Kelapure
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-finalRohit Kelapure
 
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-finalRohit Kelapure
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-finalRohit Kelapure
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshopRohit Kelapure
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroductionRohit Kelapure
 
IBM Health Center Details
IBM Health Center DetailsIBM Health Center Details
IBM Health Center DetailsRohit Kelapure
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework Rohit Kelapure
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparisonRohit Kelapure
 
SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server Rohit Kelapure
 

More from Rohit Kelapure (20)

API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice?  API First or Events First: Is it a Binary Choice?
API First or Events First: Is it a Binary Choice?
 
External should that be a microservice
External should that be a microserviceExternal should that be a microservice
External should that be a microservice
 
Should That Be a Microservice ?
Should That Be a Microservice ?Should That Be a Microservice ?
Should That Be a Microservice ?
 
Travelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platformTravelers 360 degree health assessment of microservices on the pivotal platform
Travelers 360 degree health assessment of microservices on the pivotal platform
 
SpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutesSpringOne Platform 2018 Recap in 5 minutes
SpringOne Platform 2018 Recap in 5 minutes
 
Migrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMixMigrate Heroku & OpenShift Applications to IBM BlueMix
Migrate Heroku & OpenShift Applications to IBM BlueMix
 
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
Liberty Buildpack: Designed for Extension - Integrating your services in Blue...
 
A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix A Deep Dive into the Liberty Buildpack on IBM BlueMix
A Deep Dive into the Liberty Buildpack on IBM BlueMix
 
Liberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_steLiberty dynacache ffw_iea_ste
Liberty dynacache ffw_iea_ste
 
1812 icap-v1.3 0430
1812 icap-v1.3 04301812 icap-v1.3 0430
1812 icap-v1.3 0430
 
Dynacache in WebSphere Portal Server
Dynacache in WebSphere Portal ServerDynacache in WebSphere Portal Server
Dynacache in WebSphere Portal Server
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
 
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshop
 
Performance tuningtoolkitintroduction
Performance tuningtoolkitintroductionPerformance tuningtoolkitintroduction
Performance tuningtoolkitintroduction
 
IBM Health Center Details
IBM Health Center DetailsIBM Health Center Details
IBM Health Center Details
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparison
 
SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server SIBus Tuning for production WebSphere Application Server
SIBus Tuning for production WebSphere Application Server
 

Recently uploaded

Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Recently uploaded (20)

Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

Debugging java deployments_2

  • 1. Rohit Kelapure IBM Advisory Software Engineer 29 September 2011 Server Resiliency - Debugging Java deployments
  • 2. Introduction to Speaker – Rohit Kelapure Responsible for the resiliency of WebSphere Application Server Team Lead and architect of Caching & Data replication features in WebSphere Called upon to hose down fires & resolve critical situations Customer advocate for large banks Active blogger All Things WebSphere Apache Open Web Beans committer Java EE, OSGI & Spring Developer kelapure@us.ibm.com kelapure@gmail.com Linkedin http://twitter.com/#!/rkela 2
  • 3. Important Disclaimers THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES. ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE. IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: - CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 3
  • 4. Copyright and Trademarks © IBM Corporation 2011. All Rights Reserved. IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., and registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web – see the IBM “Copyright and trademark information” page at URL: www.ibm.com/legal/copytrade.shtml 4
  • 5. Outline Server Resiliency Fundamentals Common JVM Problems Protecting your JVM Hung thread detection, Thread Interruption, Thread hang recovery Memory leak detection, protection & action Scenario based problem resolution Tooling Eclipse Memory Analyzer Thread Dump Analyzer Garbage Collection and Memory Visualizer 5
  • 6. Resiliency Property of a material that can absorb external energy when it is forced to deform elastically, and then be able to recover to its original form and release the energy 6
  • 7. Server Resiliency Concepts 7 October 4, 2011 Explicit Messaging Distributed Shared memory – Better Consistency Message Passing – Loose Coupling Uniform Interface E.g. World Wide Web Better scalability, reusability and reliability Data, process and other forms of computations identified by one mechanism Semantics of operations in messages for operating on the data are unified Self Management Composed of self-managing components. Managed element, managers, sensors & effectors e.g. TCP/IP Congestion Control Redundancy (Data and processing) Create Replicas High cost of initialization and reconfiguration Redundant elements need to be synchronized from time to time Partition Splitting the data into smaller pieces and storing them in distributed fashion Allows for parallelization & divide and conquer Partial failure isolation Virtualization Functionalities of processing and data element virtualized as a service Loose coupling between system and consumed services Integration by enforcing explicitly boundary and schema-based interfaces Decentralized Control High communication overhead of centralized control for a system of heavy redundancy Sometimes trapped in locally optimized solutions Fixing issues requires shutting down the entire system e.g. AWS outage
  • 8. Most common JVM Problem Scenarios 8 October 4, 2011
  • 9. Thread Hangs Threading and synchronization issues are among the top 5 application performance challenges too aggressive with shared resources causes data inconsistencies too conservative leads to too much contention between threads Application unresponsiveness Adding users / threads /CPUs causes app slow down (less throughput, worse response) High lock acquire times & contention Race conditions, deadlock, I/O under lock Tooling is needed to rescue applications and the JVM from itself Identify these conditions If possible remedy them in the short term for server resiliency 9 October 4, 2011
  • 10. JVM Hung Thread Detection Every X seconds an alarm thread wakes up and iterates over all managed thread pools. Subtract the "start time" of the thread from the current time, and passes it to a monitor. Detection policy then determines based on the available data if the thread is hung Print stack trace of the hung thread 10 October 4, 2011
  • 11. Thread Interruption 101 Thread.stop stops thread by throwing ThreadDeath exception * Deprecated Thread.interrupt(): Cooperative mechanism for a thread to signal another thread that it should, at its convenience and if it feels like it, stop what it is doing and do something else. Interruption is usually the most sensible way to implement task cancellation. Because each thread has its own interruption policy, you should not interrupt a thread unless you know what interruption means to that thread. Any method sensing interruption should Assume current task is cancelled & perform some task‐specific cleanup Exit as quickly and cleanly as possible ensuring that callers are aware of cancellation Propagate the exception, making your method an interruptible blocking method, to throw new InterruptedException() Restore the interruption status so that code higher up on the call stack can deal with it Thread.currentThread().interrupt() Only code that implements a thread's interruption policy may swallow an interruption request. 11 October 4, 2011
  • 13. 13 October 5, 2011 CancellingThreads
  • 14. Dealing with Non‐interruptible Blocking Many blocking library methods respond to interruption by returning early and throwing InterruptedException Makes it easier to build tasks that are responsive to cancellation Lock.lockInterruptibly Thread.sleep, Thread.wait Thread.notify Thread.join Not all blocking methods or blocking mechanisms are responsive to interruption if a thread is blocked performing synchronous socket I/O, interruption has no effect other than setting the thread's interrupted status If a thread is blocked waiting for an intrinsic lock, there is nothing you can do to stop short of ensuring that it eventually acquires the lock 14 October 4, 2011
  • 15. Thread Hang Recovery – Technique Application specific hacks for thread hang recovery Byte code instrumentation Transform the concrete subclasses of the abstract classes InputStream& OutputStreamto make the socket I/O operations interruptible. Transform an application class so that every loop can be interrupted by invoking Interrupter.interrupt(Thread, boolean) Transform a monitorenter instruction and a monitorexit instruction so that the wait at entering into a monitor is interruptible http://www.ibm.com/developerworks/websphere/downloads/hungthread.html 15
  • 16. Memory Leaks Leaks come in various types, such as Memory leaks Thread and ThreadLocal leaks ClassLoader leaks System resource leaks Connection leaks Customers want to increase application uptime without cycling the server. Frequent application restarts without stopping the server. Frequent redeployments of the application result in OOM errors What do we have today Offline post-mortem analysis of a JVM heap. Tools like Jrockit Mission Control, MAT. IEMA are the IBM Extensions for Memory Analyzer Runtime memory leak detection using JVMTI and PMI (Runtime Performance Advisor) We don’t have application level i.e. top down memory leak detection and protection Leak detection by looking at suspect patterns in application code 16 October 4, 2011
  • 17. ClassLoader Leaks 101 A class is uniquely identified by Its name + The class loader that loaded it Class with the same name can be loaded multiple times in a single JVM, each in a different class loader Web containers use this for isolating web applications Each web application gets its own class loader Reference Chain An object retains a reference to the class it is an instance of A class retains a reference to the class loader that loaded it The class loader retains a reference to every class it loaded Retaining a reference to a single object from a web application pins every class loaded by the web application These references often remain after a web application reload With each reload, more classes get pinned ultimately leading to an OOM 17 October 4, 2011
  • 18. Tomcat pioneered approach - Leak Prevention JRE triggered leak Singleton / static initializer Can be a Thread Something that won’t get garbage collected Retains a reference to the context class loader when loaded If web application code triggers the initialization The context class loader will be web application class loader A reference is created to the web application class loader This reference is never garbage collected Pins the class loader (and hence all the classes it loaded) in memory Prevention with a DeployedObjectListener Calling various parts of the Java API that are known to retain a reference to the current context class loader Initialize these singletons when the Application Server’s class loader is the context class loader 18 October 5, 2011
  • 19. Leak Detection Application Triggered Leaks ClassLoader Threads ThreadLocal JDBC Drivers Non Application RMI Targets Resource Bundle Static final references InstrospectionUtils Loggers Prevention Code executes when a web application is stopped, un-deployed or reloaded Check, via a combination of standard API calls and some reflection tricks, for known causes of memory leaks 19 October 4, 2011
  • 20. Memory leak detection console 20 October 4, 2011
  • 21. What is wrong with my application …? Why does my application run slow every time I do X ? Why does my application have erratic response times ? Why am I getting Out of Memory Errors ? What is my applications memory footprint ? Which parts of my application are CPU intensive ? How did my JVM vanish without a trace ? Why is my application unresponsive ? What monitoring do I put in place for my app. ? 21 October 4, 2011
  • 22. What is your JVM up to ? Windows style task manager for displaying thread status and allow for their recovery & interruption Leverage the ThreadMXBean API in the JDK to display thread information https://github.com/kelapure/dynacache/blob/master/scripts/AllThreads.jsphttps://github.com/kelapure/dynacache/blob/master/scripts/ViewThread.jsp 22 October 4, 2011
  • 23. Application runs slow when I do XXX ? Understand impact of activity on components Look at the thread & method profiles IBM Java Health Center Visual VM Jrockit Mission Control JVM method & dump trace - pinpoint performance problems. Shows entry & exit times of any Java method Method to trace to file for all methods in tests.mytest.package Allows taking javadump, heapdump, etc when a method is hit Dump javacore when method testInnerMethod in an inner class TestInnerClass of a class TestClass is called Use Btrace, -Xtrace * –Xdump to trigger dumps on a range of events gpf, user, abort, fullgc, slow, allocation, thrstop, throw … Stack traces, tool launching 23 October 4, 2011
  • 24. Application has erratic response times ? Verbose gc should be enabled by default <2% impact on performance VisualGC, GCMV &PMAT : Visualize GC output In use space after GC Positive gradient over time indicates memory leak Increased load (use for capacity plan) Memory leak (take HDs for PD.) Choose the right GC policy Optimized for “batch” type applications, consistent allocation profile Tight responsiveness criteria, allocations of large objects High rates of object “burn”, large # of transitional objects 12, 16 core SMP systems with allocation contention (AIX only) GC overhead > 10%  wrong policy | more tuning Enable compressed references for 64 bit JVM 24 October 5, 2011
  • 25. Out Of Memory Errors ? JVM Heap sized incorrectly GC adapts heap size to keep occupancy [40, 70]% Determine heap occupancy of the app. under load Xmx = 43% larger than max. occupancy of app. For 700MB occupancy , 1000MB Max. heap is reqd. (700 +43% of 700) Analyze heapdumps & system dumps with tools like Eclipse Memory Analyzer Lack of Java heap or Native heap Eclipse Memory Analyzer and IBM extensions Finding which methods allocated large objects Prints stacktrace for all objects above 1K Enable Java Heap and Native heap monitoring JMX and metrics output by JVM Classloader exhaustion 25 October 4, 2011
  • 26. Applications memory footprint ? HPROF – profiler shipped with JDK – uses JVMTI Analysis of memory usage -Xrunhprof:heap=all Performance Inspector tools - JPROF Java Profiling Agent Capture state of the Java Heap later processed by HDUMP Group a system dump by classloader since each app has its own classloader, you can get accurate information on how much heap each application is taking up Use MAT to investigate heapdumps & system dumps Find large clumps, Inspect those objects, What retains them ? Why is this object not being garbage collected – List Objects > incoming refs, Path to GC roots, Immediate dominators Limit analysis to a single application in a JEE environment - Dominator tree grouped by ClassLoader Dominator tree grouped by Class Loader Set of objects that can be reclaimed if we could delete X - Retained Size Graphs Retained Size Graphs Traditional memory hogs like HTTPSession, Cache - Use Object Query Language (OQL Use Object Query Language (OQL) 26 October 4, 2011
  • 27. Using Javacores for Troubleshooting Javacores are often the most critical piece of information to resolve a hang, high CPU, crash and sometimes memory problems A Javacore is a text file that contains a lot of useful information The date, time, java™ version, full command path and arguments All the threads in the JVM, including thread state, priority, thread ID, name Thread call stacks Javacores can be generated automatically or on demand Automatically when an OutOfMemoryException is thrown On demand with “kill -3 <pid>” Message to the SystemOut when a javacore is generated 27 "WebContainer : 537" (TID:0x088C7200, sys_thread_t:0x09C19F00, state:CW, native ID:0x000070E8) prio=5 at java/net/SocketInputStream.socketRead0(Native Method) at java/net/SocketInputStream.read(SocketInputStream.java:155) at oracle/net/ns/Packet.receive(Bytecode PC:31) at oracle/net/ns/DataPacket.receive(Bytecode PC:1) at oracle/net/ns/NetInputStream.read(Bytecode PC:33) at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1123) at oracle/jdbc/driver/T4C8Oall.receive(T4C8Oall.java:480) at oracle/jdbc/driver/T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813) at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154) at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415) at com/ibm/commerce/user/objects/EJSJDBCPersisterCMPDemographicsBean_2bcaa7a2.load() at com/ibm/ejs/container/ContainerManagedBeanO.load(ContainerManagedBeanO.java:1018) at com/ibm/ejs/container/EJSHome.activateBean(EJSHome.java:1718)
  • 28. CPU intensive parts of the app? ThreadDumps or Javacores- Poor mans profiler Periodic javacores Thread analysis – using the Thread Monitor Dump Analyzer tool High CPU is typically diagnosed by comparing two key pieces of information Using Javacores, determine what code the threads are executing Gather CPU usage statistics by thread For each Javacore compare the call stacks between threads Focus first on Request processing threads first Are all the threads doing similar work? Are the threads moving ? Collect CPU statistics per thread Is there one thread consuming most of the CPU? Are there many active threads each consuming a small percentage of CPU? High CPU due to excessive garbage collection ? If this is a load/capacity problem then use HPROF profiler -Xrunhrof:cpu=samples, -Xrunhprof:cpu=time 28 October 4, 2011
  • 29. Diagnosis - Hangs Often hangs are due to unresponsive synchronous requests SMTP Server, Database, Map Service, Store Locator, Inventory, Order processing, etc 3XMTHREADINFO "Servlet.Engine.Transports : 11" (TID:0x7DD38040, sys_thread_t:0x44618828, state:R, native ID:0x4A9F) prio=54XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.SQLExecute()4XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(DB2PreparedStatement.java)4XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeQuery(DB2PreparedStatement.java()4XESTACKTRACE at ... 3XMTHREADINFO "Servlet.Engine.Transports : 12" (TID:0x7DD37FC0, sys_thread_t:0x4461BDA8, state:R, native ID:0x4BA0) prio=54XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.SQLExecute()4XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(DB2PreparedStatement.java)4XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeQuery(DB2PreparedStatement.java()4XESTACKTRACE at ... 3XMTHREADINFO "Servlet.Engine.Transports : 13" (TID:0x7DD34C50, sys_thread_t:0x4465B028, state:R, native ID:0x4CCF) prio=54XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.SQLExecute()4XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.execute2(DB2PreparedStatement.java)4XESTACKTRACE at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeQuery(DB2PreparedStatement.java() Not all hangs are waiting on an external resource A JVM can hang due to a synchronization problem - One thread blocking several others 29 3XMTHREADINFO "Servlet.Engine.Transports : 11" (TID:0x7DD38040, sys_thread_t:0x44618828, state:R, native ID:0x4A9F) prio=53LKMONOBJECT com/ibm/ws/cache/Cache@0x65FB8788/0x65FB8794: owner "Default : DMN0" (0x355B48003LKWAITERQ Waiting to enter:3LKWAITER "WebContainer : 0" (0x3ACCD000)3LKWAITER "WebContainer : 1" (0x3ACCCB00)3LKWAITER "WebContainer : 2" (0x38D68300)3LKWAITER "WebContainer : 3" (0x38D68800)
  • 30. How did my JVM vanish without trace ? JVM Process Crash Usual Suspects Bad JNI calls, Segmentation violations, Call Stack Overflow Native memory leaks - Object allocation fails with sufficient space in the JVM heap Unexpected OS exceptions (out of disk space, file handles), JIT failures Monitor the OS process size Runtime check of JVM memory allocations – Xcheck:memory Native memory usage - Create a core dump on an OOM JNI code static analysis -Xcheck:jni (errors, warnings, advice) GCMV provides scripts and graphing for native memory Windows “perfmon“, Linux “ps” & AIX “svmon” Find the last stack of native code executing on the thread during the crash The signal info (1TISIGINFO) will show the Javacore was created due to a crash Signal 11 (SIGSEGV) or GPF 30 October 4, 2011
  • 31. What do I monitor ? 31 October 4, 2011
  • 32. Top Malpractices 32 October 4, 2011
  • 33. Support Assistant Workbench to help with Problem Determination 33 October 4, 2011
  • 34. One stop shop for tools to analyze JVM issues 34 October 4, 2011
  • 35. Tools 35 October 4, 2011
  • 36. Runtime Serviceability aids Troubleshooting panels in the administration console Performance Monitoring Infrastructure metrics Diagnostic Provider Mbeans Dump Configuration, State and run self-test Application Response Measurement/Request Metrics Follow transaction end-to-end and find bottlenecks Trace logs & First Failure Data Capture Runtime Performance Advisors Memory leak detection, session size, … Specialized tracing and Runtime checks Tomcat Classloader Leak Detection Session crossover, Connection leak, ByteBuffer leak detection Runaway CPU thread protection 36 October 4, 2011
  • 37. References Java theory and practice: Dealing with InterruptedException http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html Architectural design for resilience http://dx.doi.org/10.1080/17517570903067751 IBM Support Assistant http://www-01.ibm.com/software/support/isa/download.html How Customers get into trouble http://www-01.ibm.com/support/docview.wss?uid=swg27008359 37
  • 38. Q&A Thank You 38 October 4, 2011

Editor's Notes

  1. Session ID 22723 Status Accepted Title JVM Flight Simulator: Debugging Java Deployments Abstract Troubleshooting issues such as instances of OutOfMemoryError, performance problems, and various exceptions is a common task for anyone developing or deploying an application. This deep dive session presents a hands-on demo of using open source IBM tools such as Monitoring and Diagnostic Tools for Java, Extended Memory Analyzer Tool, and the Support Assistant. Come learn how to diagnose these common problem types. Speakers Rohit Kelapure IBM Advisory Software EngineerType Conference Session Length 60 minutes JavaOne Primary Track Core Java Platform JavaOne Optional Track Java SE, Client Side Technologies, and Rich User Experiences
  2. Challenge #5: Threading and Synchronization Issues Of the many issues affecting the performance of Java applications, synchronization ranks near the top. There is no question that synchronization is necessary to protect shared data in an application. The fundamental need to synchronize lies with Java&apos;s support for concurrency. This happens by allowing the execution of code by separate threads within the same process. Using shared resources efficiently, such as connection pools and data caches, is very important for good application performance. Being too aggressive with shared resources causes data inconsistencies, and being too conservative leads to too much contention between threads (because resource locking is involved). This affects the performance of the application largely because most threads servicing users are affected and slowed down -- they end up waiting for resources instead of doing real processing work.If you want to improve synchronization issues, application performance management tools can help; the right tool can enable you to monitor application execution under high loads (aka &quot;in production&quot;) and quickly pinpoint the execution times. In doing so, you will increase your ability to identify thread synchronization issues become greatly increase -- and the overall MTTR will drop dramatically.
  3. Length of time in seconds thread can be active before considered hung Number of times that false alarms can occur before automatically increasing the thresholdOpportunity to implement in apache Commons ThreadPoolDoes not include any spawned threads or unmanaged threads
  4. Calling interrupt does not necessarily stop the target thread from doing what it is doing; it merely delivers the message that interruption has been requestedDeprecated in JDK1.2 because it can corrupt object state:General‐purpose application task &amp; application library code should never swallow interruption requests
  5. and makes enough progress that you can get its attention some other way
  6. Path to GC roots – Reference chain that prevents object from being GcedDominator tree grouped by Class Loader- Limit analysis to a single application in a JEE environment Retained Size Graphs- set of objects that can be reclaimed if we could delete XSELECT data as &quot;MemorySessionData&quot;, data.@usedHeapSize as &quot;Heap Size&quot;, data.@retainedHeapSize as &quot;Retained Heap Size&quot;, mSwappableData, toString(data.mManager.scAppParms._J2EEName) as &quot;J2EE Name&quot;, toString(data.appName) as &quot;App Name&quot;, toString(data.mSessionId) as &quot;Session ID&quot; FROM com.ibm.ws.webcontainer.httpsession.MemorySessionData data
  7. If the Javacores show most threads are idle, it is possible that the requests are not making their way to the Application ServerThe following example shows multiple threads waiting for a DB2 database to respond. This indicates the bottleneck is in the DB
  8. Connection Manager, Node Synchronization, Node agent, Deployment Manager, WebContainer Runtime AdvisorSpecialized tracing and Runtime checksConnection Leak, WsByteBuffer leak detection, Session crossover, transaction ID, request ID The advisors provide a variety of advice on the following application server resources: Object Request Broker service thread pools Web container thread pools Connection pool size Persisted session size and time Data source statement cache size Session cache size Dynamic cache size Java virtual machine heap size DB2 Performance Configuration wizard