Thursday Feb 26, 2015

OpenWorld Double Dose: Maximum Availability in the Cloud

Integrated, high availability IT infrastructure capabilities are critical for reducing downtime and costs, and creating ideal performance and SLA results. In this next session of the Oracle Open World 2014 series, Shari Yamaguchi and Frances Zhao from Oracle’s Product Management team share best practices on how to architect highly available multi-data center solutions. They also share what real world customers are doing to achieve maximum available architectures with WebLogic Server—so be sure to check out the video itself here (http://bit.ly/oow14cafsessions) for those highly relevant case studies and proven strategies.

What is Maximum Availability Architecture (MAA)?

Maximum availability architecture (MAA) incorporates the high availability solutions that Oracle has invested in and built out across the stack. The key focus is on ensuring customers’ businesses and applications can fully meet their end-user community’s needs and requirements. In today’s world, downtime is no longer an option, but a given—and this is why Oracle has strategically invested in end-to-end MAA solutions to ensure your systems stay up and running across the board. At the end of the day, the #1 priority is that your end users can get to the environments and applications they need to within a specified period of time.

MAA Strategy & Investment

Within IT, customers need a quick way to easily get a view of what's going on across all their data centers, environments, and applications so that in case of a sudden performance degradation or failure, alerts are immediately sent to the right administrators. Given the importance of manageability, Oracle has invested significantly in Enterprise Manager Grid Control (EMGC), building tools within EMGC for easier monitoring and management such as job systems for automated patching and backup. The Oracle Traffic Director has also been a key tool in connecting the management console to the middle-tier—it is a front-end WebLogic Server that handles web-tier requests and routes them to different clusters.

From a Database 12c perspective, features like Flashback provde significant capabilities especially for those connected to applications, because customers can bring up a test environment, read and write against that environment, validate, shut it back down, flash it back to a previous state, and continue rolling forward through a recovery. Active GridLink, Data Guard, and Site Guard are also key investment areas that allow seamless and automatic failover between different RAC instances. Finally, Coherence is another big investment area as it is a high-end caching product that provides an integrated solution with WebLogic. With session replication, Coherence can be used not only to offset your data from database, but also could be high-availability disaster recovery solution for your WebLogic Server session state.

Core Technologies and MAA Features

To support these core investments in maximum availability, there are three primary areas of technology that Oracle focuses on implementing to support MAA in its platform architecture. The first area is management configuration monitoring—with Enterprise Manager and Site Guard, we monitor your product across different data centers. The second area is in RPO (recovery point objective)—which is related to how fast you can move your data for replication and for recovery—Oracle is investing in file base data replication. And finally, for RTO (recovery time objective)—which is related to how fast you can recover your transactions—one huge new feature is XA transaction recovery, removing the need to write every transaction statement in the T-log and making transactions automatically recoverable.

In conclusion, MAA is extremely critical to your business, which is why it is a huge priority for Oracle. The complete Oracle Solution is a global-level management configuration with Enterprise Manager, RPO, and RTO runtime for the middle-tier (including WebLogic, Coherence, and Oracle Traffic Director), and an integrated back-end database. Any one-tier disaster recovery adds value but the real importance lies in connecting all the pieces together, to maximize operational efficiency and minimize risk. 

Friday Jan 30, 2015

Exciting News: Prime Content from OpenWorld 2014… Highlighting WebLogic Strategy and Roadmap

This one is for those of you who haven’t developed that app [iphone or otherwise] which defies the laws of physics and lets us be at two sessions at once at OpenWorld. The good folks at Oracle University recorded many OpenWorld sessions and some of the most prominent Cloud Application Foundation sessions are now available here. I wanted to kick it off with the WebLogic Server Strategy and Roadmap session hosted by Will Lyons, Head of WebLogic Product Management. So sit back, relax, and enjoy your weekend watching the show!

Will talks about how to leverage WebLogic today and in the future, sharing WebLogic’s current features as well as illustrating the product’s future capabilities in the impending 2015 release of WebLogic 12.1.3. Oracle is investing in several strategic areas for WebLogic and Java Cloud Service (JCS) to ensure complete flexibility for our customers with their cloud and on-premises applications. The investment areas include improved performance, scalability, and availability for applications deployed on WebLogic and JCS, cloud-level management to simplify provisioning of WebLogic environments, multitenancy, ease of deployment flexibility, improved developer environment, and more.

Recap WebLogic 12.1.3 — Easier Development, Cloud Scale Management, and the Java Cloud Service

In the most recent WebLogic version 12.1.3, released in July 2014, new features include improved Oracle Fusion Middleware product support, mobile client application development features, and performance and availability innovations from the beginning of the development lifecycle.

For instance, the OTN Free Developer license makes WebLogic easier to get started and free for development on developer desktops, and includes refined language to broaden applicability and usage. With traditional Oracle licensing, developers could develop on their desktop for free but once applications were put in production, licensing fees would apply on the desktop where applications were developed. Now, the entire development lifecycle is free. Developer zip updates also update zip distributions with Patch Set updates for automatic bug fixes and common developer issues.

Other improvements include high availability and performance via simplified disaster recovery with 3x better output due to transactional updates without TLOG transaction writes, and Exalogic optimizations such as JMS replicated stores. Improvements in cloud scale management also see dynamic clusters that eliminate the need to create clustered configuration and managed server configurations to those clusters (ie machines, listen ports, etc.), allowing for enhanced JMS support and maximum scaling. In doing this, there is seamless upgrade, application compatibility, and interoperability with previous WebLogic versions, as well as flexibility and choice for development and runtime. Developers can now take advantage of all the latest Java SE technology, such as JDK 8 improved memory management features.

Perhaps one of the most exciting developments in WebLogic 12.1.3 is the release of Oracle Java Cloud Service, which allows customers to deploy full-featured WebLogic instances anywhere with full ability to move applications on-premise to the cloud and vice versa. Java Cloud Service includes a self-service provisioning interface which makes it easier to provision clusters and domains. There is also an option of exposing the entire surface area of the WebLogic server to do whatever you need to replicate on-premise environments to the Oracle cloud and vice-versa, with full compatibility.

WebLogic 12.2.1 Roadmap — What is Coming?

WebLogic 12.2.1, to be released in 2015, will see even further advancements including multitenancy, built-in elasticity, a REST-based management infrastructure, disaster recovery improvements, Java EE 7 support, and more seamless Exalogic integration. A truly differentiating factor is WebLogic’s multitenancy capabilities - in other words, its ability to run applications supporting multiple tenants within the same server cluster, domain, or instance.

A brand new innovation in WebLogic is a new configuration construct called a partition, which represents a ‘slice’ of a domain that can span all the servers running in your domain. Each partition can be dedicated to tenants, providing appropriate levels of end-to-end isolation of resources among partitions so you can deploy resources individually though they share a domain. Examples include memory and CPU isolation at the JVM level, or separate work managers. This concept is highly significant as it dramatically decreases density of deployments on WebLogic server, and allows customers to get far better utilization of their infrastructure. It is also a great use for consolidation--ie departmental applications that maintain isolation between multiple applications but want the same domain.

This multitenancy provides strategic end-to-end value that is completely unique to Oracle, as it will be implemented not just at the application server level but will be integrated into the entire Cloud Application Foundation stack. Elastic clusters in WebLogic 12.2.1 will also define configurable rules for cluster scaling that will help customers define actions like scaling a cluster up or down, scheduling defined by workloads or time of day, or driving other configuration changes.

Finally, there are also improvements to the Exalogic Elastic Cloud Software 12c, on which WebLogic Server is supported and optimized for. In 2015, Exalogic will allow for capabilities to build private clouds that run on the same IaaS and PaaS provisioning technology in Java Cloud Service, as well as similar interfaces.

Well, I really cant cover 45 minutes worth of content in one blog, although I tried. So go ahead and take a listen at Will’s sessions that is hosted at http://bit.ly/oow14cafsessions. Next week, we will highlight the Coherence Roadmap and Strategy session for the in-memory data grid buffs amongst you.

Friday Jan 23, 2015

Cloud Online Forum Coming January 28

Cloud. It's a big term but it doesn't have to be so, well, cloudy.

Many WebLogic (and broader Oracle users) are finding that their cloud strategy is being enabled by specific, industry-leading advances in Oracle's PaaS offerings.

Prove it! (you say) Show me! (you demand)

Then today is your lucky day! Well, January 28th is, anyway. We're hosting a Cloud Online Forum with a strong agenda to explore how you can rapidly build, deploy, manage, and secure rich applications and enable business collaboration and innovation using an integrated cloud platform - all built on the industry’s #1 Database and Application Server.

And this isn't some fluffy marketing event where we do nothing but talk about how great Oracle is and expect you to believe us without hesitation. We're being joined by IDC (the research and analyst firm) and some key guests, including 7-11's Greg Haertling, their Chief Enterprise Architect and Sr. Director of Software Development. They'll help you understand the Oracle PaaS offering from an industry perspective, as well as give an customer view of adoption and implimentation.

The event covers database and middleware platforms in the cloud, so grab your favorite DBA, developer, executive, Ops or middleware guru and join us by registering now!



January 28, 2015 | 10am PST/1pm EST
REGISTER
Modern Business. Modern Cloud.
Is Your PaaS Delivering the Agility Your Users Demand?




The Middleware General Session begins at 11:30AM PST. 7 Eleven's, Greg Haertling, Chief Enterprise Architect and Sr. Director of Software Development will you how 7 Eleven "Accelerated their Digital Transformation with Oracle's Platform as a Service." He will be joined by Oracle’s Siddhartha Agarwal, Vice President, Product Management and Strategy.

They will discuss how Platform as a Service is driving efficiencies for development, operations and LOB, including highly scalable and cost efficient development & testing in the cloud, delivery of enterprise class cloud & mobile apps, rapid integration of cloud & on-premise investments, and seamless workload portability between on-premises & cloud.

Afterward, you can watch these additional Middleware Sessions in the following tracks:

Application Developer Track: Build, Test, Extend Cloud Applications
  • Java App Performance at the Speed of Cloud: Hot Tips for Successful Cloud Development
  • Jazz Up Your SaaS with Oracle PaaS Solutions
  • Mobile Development in the Cloud

Middleware IT Operations Track: Integrate, Secure, Manage your Cloud
  • Simplify SaaS and On-premises Integration
  • Extend Your Identity Management Services to the Cloud
  • Top Tips for Managing Your Application PaaS

Business User Track: Connect, Collaborate & Analyze in the Cloud
  • Next-Gen Enterprise Content Management in the Cloud
  • Rapid Business Process Automation in the Cloud
  • Unlocking the Power of Business Analytics in Oracle Cloud

There will also be a Database General Session and Database Cloud Platform sessions that you can attend. Join us!

Thursday Dec 04, 2014

TUI Travel: 200% More Revenue with WebLogic and Coherence

TUI Travel is a leading provider of travel solutions, operating in 110 countries. They were faced with a challenge of scaling their solutions and providing data in real time to customers. Here's Facundo Rua, Head of Technology, on how WebLogic and Coherence 12c drastically increased their response times and revenue.

Thursday Jul 24, 2014

Improved High Availability with Whole Server Migration on Dynamic Clusters

If you remember, we added Dynamic Clusters in WebLogic Server 12.1.2. Dynamic Clusters make it really easy to configure a cluster and to scale up that cluster. They are a cloud-enabling technology that provides elasticity for your applications. We’re always looking to improve on a good thing, so in WebLogic Server 12.1.3, we enabled Whole Server Migration with Dynamic Clusters. Whole Server Migration enhances the availability of clusters by enabling a failing/failed managed server to be restarted automatically on a different machine. This is especially important for recovery of persistent JMS messages and distributed transactions.

I just posted a video on YouTube with more details and a short demo. Take a look:

If you want to learn more:

Thursday Jun 26, 2014

Oracle WebLogic Server 12.1.3 is Released

We're proud to announce that Oracle WebLogic Server 12.1.3 has been released as part of the Cloud Application Foundation and Oracle Fusion Middleware 12.1.3 release as described at the Cloud Application Foundation Blog. Oracle WebLogic Server is the industry's leading application server, providing unparalleled choice for deploying applications in public clouds, on-premise private clouds, engineered systems such as Oracle Exalogic Elastic Cloud, Oracle SPARC SuperClusters, and Oracle Database Appliance systems, and conventional systems.

Oracle WebLogic Server 12.1.3 is a new version release of Oracle WebLogic Server 12c.   It builds on the features provided in WebLogic Server 12.1.2 to improve developer productivity, performance and high availability, and manageability.   It enables you to develop and deliver innovative applications, to meet the application service level requirements for your business, and to manage your application infrastructure efficiently to achieve low total cost of ownership.

For developers we have placed specific focus on enabling development of server applications that support rich client applications running in HTML5 browsers or mobile devices. Such applications typically rely on REST based Web Services, use JSON as the data format for message payloads, and often require dynamic updates between clients and servers. In Oracle WebLogic Server 12.1.3, we have implemented support for selected Java EE 7 APIs including JAX-RS 2.0, Java API for JSON Processing, Java API for WebSocket, and JPA 2.1, to enable and support development of such applications.  We have also delivered related value-added capabilities like support for Server-Sent Events and unique WebSocket emulation capability.

High availability and performance improvements include improvements to Oracle Database 12c integration support - we have bundled the latest version of the Oracle Database 12c driver for ready access to database integration features, and have certified Oracle Database 12c AQ JMS as a Foreign JMS Server within Oracle WebLogic Server.    Innovations to the Oracle WebLogic Server transaction processing subsystem enable elimination of transaction logs in many cases, increasing performance and simplifying distaster recover configuration.   Optimizations for Oracle Exalogic systems include JMS performance improvements, and Cooperative Memory Management to adapt server memory usage based on memory consumption on Oracle Exalogic systems.

Manageability enhancements include improvements to dynamic clusters introduced in Oracle WebLogic Server 12.1.2.   In Oracle WebLogic Server 12.1.3 we support use of whole server migration to provide improved availability for dynamic clusters environments using JMS.    We have expanded our support for REST-based management, adding lifecycle management, application deployment, and datasource configuration support via REST.   We have also made similar improvements to support for Oracle WebLogic Server management in Oracle Fusion Middleware Control.

Finally, Oracle WebLogic Server 12.1.3 is the foundation of the Oracle Fusion Middleware 12.1.3 release, which adds Oracle SOA Suite 12c and other Oracle Fusion Middleware products to the family of products that is supported with Oracle WebLogic Server 12c.  This will make it easy for Oracle WebLogic Server 12.1.3 customers to adopt the latest releases of these products, and will also enable Oracle Fusion Middleware users to take advantage of the latest features in WebLogic Server 12.1.3.  To learn more:

...and look for more information from us in the coming days and weeks.  Thanks!

Monday Jun 16, 2014

Detailed Analysis of a Stuck Weblogic Execute Thread Running JDBC Code

The following thread was extracted from a thread dump taken on a JVM instance running WebLogic Server.

In this post I will deconstruct this thread and describe the data it contains and the potential issues it may illuminate.

[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' id=73 idx=0x128 nid=13410 prio=1 alive, in native, daemon 

 java.net.SocketInputStream.socketRead0(Native Method)

java.net.SocketInputStream.read(SocketInputStream.java:129)

oracle.net.ns.Packet.receive(Unknown Source)

oracle.net.ns.DataPacket.receive(Unknown Source)

oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)

oracle.net.ns.NetInputStream.read(Unknown Source)

oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)

oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)

oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:751)

oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:362)

oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)

oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)

oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)

oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)

java.sql.DriverManager.getConnection(DriverManager.java:140)

com.foo.abc.util.ConnectionPool.createConnection(Unknown Source)

This thread is considered Stuck by WebLogic because it's been running for over the time defined in MaxStuckThreadTime (600 seconds by default). Weblogic Server waits for this time to be reached before marking a thread as stuck if the thread is still working after this time.  If you deem that 600 seconds is too long before a running thread is considered stuck then you can change the value of the this parameter using the WebLogic Console (as shown below), or use setMaxStuckThreadTime from the ServerFailureTriggerMBean interface.

An error including BEA-000337 will be logged in the server log file when the thread changes its status to stuck but the server won't take further action on this thread.  However, you might want to investigate why this thread is taking such a long time to process the work assigned to it.

Lets now look at the thread itself.  From its header, you can spot the thread identifier (2 in this example) and the queue where it originated.  The term Self-tuning indicates that the associated thread pool consistently checks the overall throughput to determine if the thread count should change.

id (or tid) is the thread identifier, a unique process-wide number that identifies this thread within the JVM process.  This id is unique but can be reused by another thread once this thread is terminated. 

nid is the OS-level native thread identifier.  It can be used effectively to correlate with high CPU usage threads identified at the OS level (e.g. with Linux watch command).  See Unexpected High CPU Usage with WebLogic Server (WLS) Support Pattern (Doc ID 779349.1) for detailed steps.

idx is the thread index in the threads array.

prio refers to the thread priority, a number inherited from the thread that created it.  You can learn more about thread priorities at Class Thread but basically threads with higher priority are executed in preference to threads with lower priority.

alive refers to the fact that this thread has not ended yet and is still active.  

in native means that the thread uses the operating system's native ability to manage multi-threaded processes.  

daemon indicates that this thread can't prevent the JVM from exiting.

The thread header is accompanied with a full java stack which lists each method and class invoked since the first assignement to the thread up to its most recent action. This thread consists of obtaining a connection to an Oracle database using a Type 4 JDBC driver and then issuing a call but getting no response from the back end database server.  The database failed to respond, and the thread has probably been in the same waiting mode (unchanged and not progressing java stack) for a long time since it's now considered stuck; the most recent invocation being java.net.SocketInputStream.socketRead0.

At this point the back end database needs to be checked to understand why it's not responding to the java thread request.  A starting point could be to query v$session to find potential blocking sessions at the database level.

Blocking sessions occur when one session holds an exclusive lock on an object and doesn't release it.

Needless to say, the communication with the database needs to be confirmed as healthy with none to very limited latency.  Firewall issues should be ruled out as well.  Firewalls could time out idle sockets used by JDBC connections to the database and lead to not closing the socket the JDBC driver is using.

Thursday Jan 23, 2014

Future-Proof Your Applications

Ever wonder why it makes sense to consolidate your application infrastructure on WebLogic?

The reasons are many. Firstly, WebLogic is Oracle’s strategic application server. Consolidating on the latest release provides better runtime capabilities and increased efficiency. WebLogic has one of the industry's best [if not the best] backward compatibility. Because thousands of customers have done it and they have been successful and in the process the kinks in the process have been ironed out......

Packed with customer success stories, this e-book provides insights, proof points, and best practices for you to drive the transition. Learn from many other WebLogic and Oracle iAS customers why it makes sense to consolidate on the latest WebLogic release, whether you are operating a traditional data center or transforming it to the cloud.

Register and download this ebook now!

Friday Aug 30, 2013

Introducing Elastic JMS

In WebLogic 12.1.2, we enhanced the way that you can configure JMS servers, stores, and subdeployments so that the JMS subsystem can automatically scale with the Managed Servers in a cluster. We call this Elastic JMS. My friend Maciej Gruszka calls it Magic JMS!

 Here are some details:

JMS Servers: In releases before WebLogic Server 12.1.2, each JMS Server was individually configured and targeted at a single Managed Server. It didn’t matter whether or not that Managed Server was part of a cluster. Starting in WebLogic Server 12.1.2, you can target a JMS Server at a cluster. Under the covers, WebLogic spins up a JMS Server on each managed server in the cluster. If you add or remove servers from the cluster, JMS Servers are added or removed automatically.

WebLogic Persistent Stores: Like JMS Servers, in releases before WebLogic Server 12.1.2, each WebLogic Persistent Store (file store or JDBC store) was individually configured and targeted to a single Managed Server, clustered or not. In WebLogic Server 12.1.2, you can target a WebLogic Persistent Store at a cluster. Under the covers, WebLogic creates a store instance on each Managed Server in the cluster. Each instance of a file store uses the same path to either a shared file system or to a local file. Each instance of a JDBC store uses the same JDBC data source, but gets its own underlying tables.

Subdeployments: A subdeployment defines the list of JMS Servers that will host a queue or topic. In releases before WebLogic Server 12.1.2, when you defined a subdeployment for a distributed queue or topic, you listed each JMS Server in the cluster. When you scaled up the cluster by adding a Managed Server and a corresponding JMS Server, you also needed to update the subdeployment with the new JMS Server. Starting in WebLogic Server 12.1.2, subdeployments are much simpler. You can list a single JMS Server that is targeted at the cluster. When you scale up the cluster, the distributed queue is automatically extended to the new JMS Server instance without any changes to the subdeployment.

Pulling it all together: By using cluster targeted JMS Servers and Persistent Stores, you get some nice benefits:

  • Simplified configuration – Even initial JMS configuration is much simpler than it was in the past: no need for individually configured JMS Servers and related items.
  • Elastic scalability – As you scale the cluster, the JMS services automatically scale with it. 
  • Support for Dynamic Clusters – Because Dynamic Clusters require homogenous targeting of services, the new configuration options make it possible to run JMS on Dynamic Clusters. 

  • Check out the documentation at http://docs.oracle.com/middleware/1212/wls/JMSAD/dynamic_messaging.htm or see my video at for more details.

    Friday May 17, 2013

    Troubleshooting Tools Part 3 - Heap Dumps

    A Heap Dump is a snapshot of the Java process heap memory at a given time.  It's a useful tool to troubleshoot memory leaks and other memory related issues.  Heap dumps are to memory what thread dumps are to java threads.

    There are different ways to dump the java heap used by a Java application such as WebLogic Server.  Heap dumps can be triggered automatically by JVMs such as HotSpot or JRockit when an OutOfMemory event occurs.

    Example:

    java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\myApp\hprof-dumps myApp  

    This command will generate a heap dump file in the defined heap dump directory when an OOM is thrown.  

    The file will be in HPROF binary format (*.hprof).  If no path is defined the file will be created in the directory from which the java process was launched.  The format of the file with JRockit is jrockit_pid,hprof, pid being the process ID of this JVM instance.  With HotSpot the format of the file will be java_pidpid.hprof.

    Example:

    java.lang.OutOfMemoryError: Java heap space

    Dumping heap to D:\java_pid4148.hprof ...

    Heap dump file created [24921731 bytes in 1.400 secs]

    For WebLogic Server these properties, HeapDumpOnOutOfMemoryError and HeapDumpPath (optional), can be added directly to the startup script that contain the Java command that launches WLS.  On Windows the script (with default name startWebLogic.cmd) lives in the domain bin directory and the parameters can be directly added to the existing JAVA_OPTIONS.

    With a JRockit VM process the following command can also be used to generate a heap dump.

    Example:

    jrcmd pid hprofdump filename=name_of_dump_file

    However if you are using this command against a non JRockit process the following error will come up:

    java.io.IOException: Command failed in target VM

    You can also manually generate a heap dump with tools such as jmap or VisualVM.

    Example:

    jmap -heap:live,format=b,file=filename pid

    This command will generate a heap dump file in binary format and will only count live objects (the live option is optional). Live objects are used by applications and generally reside in the Young Generation part of the heap.

    As illustrated in the screenshot below, generating a heap dump with VisualVM is very simple.  VisualVM is shipped as part of the HotSpot JVM  (/bin/jvisualvm.exe).  However, VisualVM can connect to java processes that started with other JVM such as JRockit.


    Once generated, the heap dump will be parsed as shown below:

    VisualVM enables you to browse heap dumps as shown above with the Classes view where you can easily identify the number and percentage of instances referred by each class.

    jhat can also be used to analyze heap dump files.

    Example:

    jhat dumpfile

    Reading from dumpfile...
    Dump file created Fri May 17 15:25:41 PDT 2013
    Snapshot read, resolving...
    Resolving 580390 objects...
    Chasing references, expect 116 dots.............................................
    .......................................................................
    Eliminating duplicate references................................................
    ....................................................................
    Snapshot resolved.
    Started HTTP server on port 7000
    Server is ready.

    Then you can open http://localhost:7000/ to navigate through the content of the dump file to identify objects with high number of occurrences.

    Finally, as shown below, the OpenSource Eclipse MAT offers a very rich GUI that includes histograms and leak hunter actions, overview and leak suspect reports and much more.


    Previous posts on troubleshooting tools:

    Troubleshooting Tools Part 1 - VisualVM

    Troubleshooting Tools Part 2 - jstack

    Tuesday Feb 05, 2013

    Troubleshooting Tools Part 2 - jstack

    In my latest blog post I talked about VisualVM, a very effective monitoring and troubleshooting tool.  Many other easy-to-use and free tools can be used while working with Java SE.  First of all, and since there is no need to re-invent the wheel, you can access documentation of such tools for Windows at Quick Troubleshooting Tips on Windows for Java SE 6 and for Solaris and Linux at Troubleshooting Tools on Solaris OS and Linux for Java SE 6

    These tools include jstack, jinfo, jconsole, jmap, jstat, jhat and a few others.

    jstack can be use to dump the java threads.  While working with WebLogic Server, you can dump the java threads with various tools such as WLST.  jstack can do just that but differs from <ctrl>+<break> or kill -3 since it doesn't dump a heap summary along with the threads.  

    In addition, jstack can print lock information with -l option and the list of synchronizers that may be exclusively owned by a thread.  Such information can be very useful while monitoring concurrent access by threads.

    jstack comes as part of the JDK installed with WebLogic Server.  With instances of WLS running, you can open a new shell, execute the setDomain script and run jstack or any tool that's part of the JDK package. Thread dumps taken by jstack can be redirected to files, e.g. jstack <pid> > myTD.txt.

    PIDs can be obtained on Solaris/Linux with the ps (report process status) command, e.g. ps -ef | grep java, and from the task managed on Windows.  In task manager you might need to go to View and Select Columns to add PID or process identifiers.

    Friday Jan 18, 2013

    Troubleshooting Tools Part 1 - VisualVM

    A variety of free troubleshooting and debugging tools exist but which ones are really useful when analyzing issues with WebLogic Server?  In this new blog post series, I will talk about some of the best tools that are available, easy to use, free, and very effective in identifying a bunch of issues.  In this first post I will cover VisualVM.

    VisualVM most recent version, or 1.3.5, was released on 11/13/2012.  This tool consists of an user-friendly visual interface for monitoring running JVMs.  Multiple instances of WLS or Java can be monitored at the same time by just connecting to running local or remote JVMs.  VisualVM needs to run on Oracle Sun JDK 6+, the JDK, not the JRE. VisualVM can be started as follow to specify the JDK to run it it on.

    visualvm --jdkhome "JDK_location", or visualvm --jdkhome "d:\jdk160_24"

    Alternatively, /etc/visualvm.conf can be modified to specify a desired JDK.  After launch, the list of local running Java instances will be displayed on the left panel under applications.  In Remote, you can define the host of other running Java instances.  By selecting a running server and clicking on open, you should get a screen similar to the following:

    In Start Page, online documentation of VisualVM can be easily accessed.  Tags next to Start Page are specific to open JVM instances.  In my case, you will find a Weblogic Server instance with its process id (pid).

    Underneath, Overview reports all JVM settings as well as many system properties including Weblogic specific properties.

    Monitor gives access to realtime monitoring of CPU, Heap, Classes and Threads.  You can also force a garbage collection (GC) or issue a heap dump for further analysis.

    Threads reports all threads activity in realtime but also allows to take thread dumps.  All thread dumps will be attached to the relevant application process on the left panel and saved in C:\Users\<user_name>\AppData\Local\Temp\visualvm.dat.  Example: C:\Users\lgoldszt\AppData\Local\Temp\visualvm.dat\localhost_6352\threaddump-1358534350679.tdump.  Thread dumps can be further diagnosed with ThreadLogic.

    In Samplers, you can record CPU or memory usage activity.  This is neat to debug potential memory leak and high CPU usage threads.

    Finally, Profiler allows to identify where most of the time is being spent and which objects consume most of the memory.

    Snapshots of memory can be taken and compared with others, see File - Compare Memory Snapshots.  

    Also VisualVM comes with a bunch of easy to install plugins as you can see below:

    VisualVM doesn't have an MBeans tab like JConsole.  However, this can be very easily changed by installing the available VisualVM-MBeans plugin.  

    With its extensive features, especially including those offered by individual plugin, VisualVM is the tool of choice and combine characteristics of tools such as JConsole, jstat, jmap, or jstack.

    Among other choices, the download page gives you the opportunity to use the VisualVM Eclipse launcher plugin.

    For further information and demos please visit VisualVM demo and features

    Thursday Dec 22, 2011

    WebLogic Server Midweek Update December 22, 2011

    Hi Everyone. A few WebLogic Server notes and events that you don't want to miss! Happy Reading and Happy Holidays!

    Unveiling Oracle WebLogic Server 12c

    Oracle WebLogic Server 12c is cloud-ready and optimized for modern, lightweight Java EE 6 Full Profile Development. Download and unzip the 168mb distro and go, no installer! Check out the launch event replay, which includes a developer-focused deep-dive session, for details.

    Download: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html

    Launch Event Replay: https://event.on24.com/eventRegistration/EventLobbyServlet?target=registration.jsp&eventid=375727

    Virtual Developer Day: Oracle WebLogic Suite 12c (Jan. 24, 2012)

    In this virtual workshop, Java developers and architects can learn how to use Java EE 6, Oracle WebLogic Server 12c, Oracle Coherence, Oracle Enterprise Pack for Eclipse, NetBeans, Maven and Hudson in hands-on labs and sessions while interacting with Oracle product experts in live moderated chats. Learn more about the event, or register now!

    Learn More: http://blogs.oracle.com/cloudappfoundation/entry/otn_virtual_developer_day_returns

    Register Now: http://oracle.6connex.com/portal/weblogicsuite/login/?langR=en_US&mcc=blog-wl

    WebLogic Devcast Webinar Series (Jan 12, 2012 10:00am PT)

    Introducing a new, monthly webinar series focused on Oracle WebLogic Server 12c and Java EE 6! The first webinar, "Developing a Data Access Layer with JPA" is now open for registration. The February webinar will be replaced with the OTN Virtual Developer Day: WebLogic Suite 12c, and then we will resume a monthly cadence in March.

    Learn More: http://www.oracle.com/goto/weblogicdevcast

    About

    The official blog for Oracle WebLogic Server fans and followers!

    Stay Connected

    Search

    Archives
    « July 2015
    SunMonTueWedThuFriSat
       
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
           
    Today