Diagnostic & Calibration Java Enterprise Web Applications - Performance Management for individual Best Fit Deployments
by Thomas Merten, Enterprise Systems Integration
| "Ad majorem Dei gloriam." |
Saint Ignatius of Loyola
The JMX technology provides tools and API for building distributed, Web-based, modular and dynamic solutions for managing and monitoring devices, applications, and service-driven networks. By design, this SUN standard is suitable for adapting legacy systems, implementing new management and monitoring solutions, and plugging into those of the future.
Based on Java Management Extensions API Java MX Calibration Services implements Diagnostic & Calibration functionality in Java EE Web Applications as part of Performance Management for individual Best Fit Deployments and essential Visibility into Java Web Transactions across your infrastructure. You identify performance problems and balance your Java Web Server remote at runtime via JMX supported Tools. Java Server Performance depends on CPU & Memory allocation. Tuning Performance is a calibration Process in reference to stability. JMX Calibration Services addresses this with Monitoring and Run-time Customizing of key parameters. Fail-over strategies are implemented and customizable while calibration process. JMX Calibration Services are pure J2EE Web Component for high traffic environments. By architecture, it runs on all Java Web Containers without any modification and requires a Servlet Specification 2.3 or later. JMX Calibration Services supports HTTP and JMX Monitoring and JMX Run-time Customizing. Log-Profiling is supported via file logging using the java.util.logging facility. Using JMX Calibration Services no hardware or software architecture changes required. The Implementation takes care about the relationships between Java Server Threads and the Java Memory Model(JMM) in multi core hardware environments.
Java Calibration Services are pluggable over loadbalancer.jar registration in Web-Inf/lib directory of the Java EE Web Application and administrated using web.xml registration and configuration. Nonfunctional System Components are configured as filter and mapped via url-mapping to a specific critical Ressource. So critical Thread Informations are available over his standard JMX Components and associated with Java Calibration Services MX Beans which are registered on MBeanServer with ObjectName: j2ee.loadbalancer:type=NNN.
nonfunctional MX Beans:
Java MX Calibration Services Sequence Diagram:
Here we demonstrate use of JMX Channnel Technology to remote control the Flow of a long running Java Server Face Task in a J2EE Web Container Environment. The Demo runs in Tomcat Web Container without any changes and demonstrates customized JMX realtime Profiling & Monitoring of Java EE LoadBalancer Parameters & JSF-CDI Bean Properties using SUN JConsole. Run-time Customizing of “Long running Tasks” is based on CurrentThreadId and registered as MXBeans with ObjectName: jsf.cdi.jmx.monitoring:type=NNN.
Java Server Faces Demo Web Application using Java MX Calibration Services: Download
functional MXBeans Operations: jsf.cdi.jmx.monitoring:type=RechnerBeanCDI.cancelOperation
Java MX Calibration Services UML Class Diagram:
MX Beans Attributes Runtime Customizing is used for Calibration of Nonfunctional Components
|nonfunctional MXBeans Attributes:||j2ee.loadbalancer:type=RechnerBalancer.EndPointMaxThreadPool|
JMX Run-time Customizing of Semaphores Parameter to get the Best Fit profiling for your environment is supported. Set the parameter values for MAX_THREAD_COUNT and THREAD_BLOCKING_TIME to change configuration and Run-time Behavior in real-time to find Best Fit Settings for EAI Endpoint and System.
Monitor system changes in relation to your new Attribute settings (in Attribute Chart mode):
CurrentEndpointAllocatedBytes returns an approximation of the total amount of memory, in bytes, allocated in heap memory for the last current Endpoint thread(while current jconsole jmx interval). Requires Java SE 1.7 .
CurrentEndpointAllocatedBytesRelative returns an approximation of the relative amount of memory, in percent, allocated in heap memory for the last current Endpoint thread (while current jconsole jmx interval) in relation to the total amount of memory allocated in heap memory for all live Threads. Requires Java SE 1.7 .
EndpointTotalAllocatedBytes returns an approximation of the total amount of memory, in bytes, allocated in heap memory for all Endpoint Threads based on the specified EndPoint URL-Pattern (while current jconsole jmx interval). Requires Java SE 1.7 .
EndpointTotalAllocatedBytes returns an approximation of the total amount of memory, in percent, allocated in heap memory for all Endpoint Threads based on the specified EndPoint URL-Pattern (while current jconsole jmx interval) in relation to the total amount of memory allocated in heap memory for all live Threads. Requires Java SE 1.7 .
EndPointTotalCpuTime is the total CPU time over all Endpoint threads(while current jconsole jmx interval) have executed in user mode plus system mode in nanoseconds. CPU time(all Endpoint threads) = user time(all Endpoint threads) + system time(all Endpoint threads)
EndPointTotalUserTime is the total CPU time over all Endpoint threads(while current jconsole jmx interval) have executed in user mode(running your application's own code) in nanoseconds.
EndPointTotalSystemTime is the total CPU time over all Endpoint threads(while current jconsole jmx interval) have executed in system mode(running OS code on behalf of your application (such as for I/O)) in nanoseconds. user time(all Endpoint threads) = CPU time(all Endpoint threads) - user time(all Endpoint threads)
Amount of all Endpoint threads in relation to all JVM threads.
CurrentEndPointCpuTime is the amount of time that the last current Endpoint thread(while current jconsole jmx interval) has executed in user mode plus system mode in nanoseconds.Total time spent using a CPU for your application. CPU time = user time + system time
That means: Server Application processing time used to serve the last current request.
Amount of all Endpoint threads waiting(THREAD_BLOCKING_TIME) until the Request-pool has new free thread resources
Amount of free Endpoint thread resources. Running Endpoint Threads = MAX_THREAD_COUNT-Current_Thread_Pool_Count
Java MX Calibration Services requires:
In the cooperation community with our clients, we will established an ideal basis to react to the concurrence of current changes on the online markets platform[Java EE => Java Ondemand Platform]. That is why the joint development of the JMX Calibration Services solutions as OpenSource Platform, meeting ever-changing requirements, contributes sustainably to the competitive edge of our business clients.
Moreover, we offers company-specific Quality Assurance process consultation with an ideal IT implementation within the cooperation community. Our expert knowledge, our implementation expertise and our experience from long-time cooperation with many e-commerce & high technology industry companies make us your ideal business partner.
Java MX Calibration Services is open source but not free.
© 2014 Thomas Merten. Alle Rechte vorbehalten. Alle Warenzeichen sind Eigentum ihrer jeweiligen Inhaber. Angaben in diesem Dokument dienen nur der Produktbeschreibung und stellen keine zugesicherten Eigenschaften im Rechtssinn oder Garantien dar. Garantien bedürfen einer ausdrücklichen und schriftlichen Bestätigung. Änderungen und Anpassungen vorbehalten.
Limited warranty: Java MX Calibration Services Software and Documentation are "as is" without any warranty as to their performance, merchantability or fitness for any particular purpose. The licensee assumes the entire risk as to the quality and performance of the software. In no event shall Java MX Calibration Services or anyone else who has been involved in the creation, development, production, or delivery of this software be liable for any direct, incidental or consequential damages, such as, but not limited to, loss of anticipated profits, benefits, use, or data resulting from the use of this software, or arising out of any breach of warranty. This includes, but is not limited to, interruption of service, loss of classroom time or loss of consulting profits from the use of these programs.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
My professional activities currently concentrate on hybris Core/eCommerce Profiling and Monitoring & SaaS Architectures.I am also interested in Oracle Siebel System Integrations. Previously, I worked in the ICT industry as Siebel Core Consultant. Presently I am working as a freelance consultant and software engineer in Europe. I am always looking for new and interesting projects, and you can hire me. Check out my profile and references to see if I may be able to help you. I contribute to the Java Platform with the Java MX Calibration Project at SUN Source.