Skip to main content

Posts

Showing posts with the label Performance

JDBC Connection Leak in ADF app on a WebLogic Server

It's an old topic but worthy to post as it happens frequent enough in codes that I observed. The bottom line of the issue that I am going to describe here is a coding issue, to it applies to WebLogic 11g as well as 12c. An ADF app deployed on a remote WebLogic Server went to an error page frequently. Checking the log, I found it's complaining on "JBO-26061: Error while opening JDBC connection". The next thing I did is checking the data source of the ADF App configured on the WebLogic Server console. On the Data Source -> Monitoring -> Statistics, the "Active Connection Average Count", "Active Connections Current Count" and "Active Connection High Count" all showed "15", which is the default max capacity of a connection pool. This shows all the connections are taken and no more connection available. I go to Monitoring -> Testing, select on the affected server and click on "Test Data Source", such error w...

Build A Concurrent Web Page With A Simple Example

Today, by using a simple example, I am going to demonstrate on how to build a concurrent web page in ADF using Jdeveloper. From time to time, I see requirements from various contexts with such needs to build concurrencies on web pages. The performance can be greatly benefited since multiple processes are executed at the same time so that the response time is greatly improved. It's also very suitable for the use cases that the processes are not associated with any user interface interactions, such as sending an email to user after performing some action but the web page does not need to know if/when the email is sent. Such processes can be executed in a separate thread from the main thread dealing with the web page rendering and other user interactions. Even if you don't have hard requirement on such concurrency needs, why waste it? Nowadays, all servers are built with multi-core computation capabilities and designed for parallel processing. In years the speed of the CPU is n...

Reentrantlock Caused Content Presenter Performance Issues for > 1000 Concurrent Users

Thanks Martin Deh from A-Team for identifying it is a recently reported bug. To summarize the problem: during a load testing (>1000 users attempt) on a WebCenter framework application developed with content presenter task flows, the performance (page response time) was greatly impacted by a series of parked threads. The issue was not produced in the 1000 users test. The parked threads took from >30 seconds to minutes to resume. By investigating the stack trace, the culprit is pointed to java.util.concurrent.locks.ReentrantLock.lock() which is called by UCMBridge.getAccessLevel(IdcContext, DataObject, ITrace). This issue has been filed as a bug ( Bug 17330713 ) and the patch/fix is to be provided soon (Update: the patch is available as of date 11/4/2013 for 11.1.1.7.1) The following shows a graphic indication of the parked threads (gray) through the tests. As you can see, the gray areas took the majority of the timeline. Here is the stack track of one particular parked ...

WebCenter Portal HA and Performance Tuning Checklist

Performance is a broad topic which is never out of date. I'd like to itemize a checklist with specific topics, links and references. Some topic may be more generic and some may be more specific. But this list mainly focuses on WebCenter Portal applications and its relevant products. This is not intended to be a complete list and there will never be. WebCenter Performance Tuning Guide HA for WebCenter Portal and ADF application Configure JOC for WebCenter Portal services Configure Coherence Caching for Content Presenting WebCenter Performance Study (Including Enable Client Caching and Compression) Tuning JVM Weblogic Capacity Planning Middleware Performance Tuning Roadmap Oracle HTTP Server Performance Tuning MDS Performance Tuning Using Cluster and HA Features Some Useful A-Team Blog Posts: High availability considerations for WebCenter Portal and ADF   Improving ADF Page Rendering Time : Progressively Loading Taskflows Configure Coherence for Oracl...

Super Slowness on Content Presenting Rendering due to Large Number of Profiles, Region Definitions or Static Lists

Update : The Oracle Patch on the bug has been released: Patch 17328920 : CONTENT PRESENTER THROWS STUCK THREAD AND OOM WHEN UCM RETURNS MANY PROFILES.  In this fix, a system parameter "contentTypeLazyCaching=true" is requested to be added on the JVM startup. Custom code has been added into the ContentTypeFactory.class in the two places: %ORACLE_HOME%/webcenter/modules/oracle.webcenter.content.integration_11.1.1/ucm_spi.jar/oracle/webcenter/content/integration/spi/ucm/factory/ContentTypeFactory.class %ORACLE_HOME%/webcenter/modules/oracle.webcenter.content.integration_11.1.1/content-app-lib.ear/APP-INF/lib/ucm_spi.jar/oracle/webcenter/content/integration/spi/ucm/factory/ContentTypeFactory.class The directory could be either on your local Jdev folder or on the remote WebCenter portal server. The added custom code is a new method getMinimalContentTypes():   public synchronized List<ContentType> getMinimalContentTypes()     throws RepositoryExc...

How to acquire large pages for Java heap

Although there is a similar blog entry on this topic, I’d rather to blog it anyway for my own reference. If the WebLogic Server was installed on Linux and when starting, you might see the following message: What happened is the default JRockit JVM prefers to uses large pages for Java heap but the Linux OS is not setup yet for this option. HugePages is a feature integrated into the Linux kernel 2.6. It’s a method to have larger page size that is useful for working with large memory. HugePages is userful for both 32-bit and 64-bit configurations. Its size varies from 2MB to 256MB, depending on the kernel version and the hardware architecture. Using HugePages reduces the OS maintenance of page states, and increases Translation Lookaside Buffer (TLB) hit ratio. Run the following will show a filesystem of type hugetlbfs configured in the kernel: cat /proc/filesystems First, we need to create the hugepages director...

Considerations on WebCenter/ADF Performance

Performance for WebCenter/ADF is always a hot topic. For every application (ADF web apps, WebCenter Portal/Spaces apps, or others), you will be ended up to deal with it sooner or later. Sooner is of course better, it's recommended to be considered at the time the project is plotted out since you will need to consider your budget for hardware/software acquisitions. I have experienced with couples of clients that requested to tune performance after the application went to production which is still OK but not the ideal time, simple because there are so many restrictions dealing with performance tuning after it went on production. The performance no doubt is a broad topic. This article will try to include a checklist of areas you need to bear in mind for the matter of performance in the WebCenter/ADF world, but will not go into very detail on each section. Performance is limited by many factors, such as hardware resource and the application architecture. The CPU type/speed,...