Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

12
Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalan

Transcript of Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Page 1: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

Java EE LoadBalancer

Page 2: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Diagnostic & Calibration Java EE Web Applications - Performance Management for individual Best Fit Deployments

The Java EE LoadBalancer is a pure J2EE Web Component for high traffic environments. You identify performance problems and balance your Java Web Server. Java Server Performance depends on CPU & Memory allocation of Traffic. Tuning Performance is also a calibration Process in reference to stability. Java EE LoadBalancer addresses this with Monitoring and Run-time Customizingof key parameters (response time & throughput). Via jconsole essential Visibility into Java Web Transactions is supported acrossyour Web Application infrastructure. Traffic is directed through a Semaphore mechanism[from E.W.Dijkstra] to protect memorycritical resources. Fail-over strategies are implemented and customizable while calibration process. LoadBalancing is software-based build on common Java SE & Servlet Specification 2.3 standards and supports any industry-standard Java EE Web Container.

The LoadBalancer can be easily deployed over j2ee.loadbalancer.jar registration in Web-Inf/lib directory of the Web Application and administrated in every Web Application using web.xml registration and configuration. The LoadBalancer supports HTTP andJMX Monitoring and JMX Run-time Customizing of LoadBalancer Parameters. Historical Profiling is supported via file logging usingthe java.util.logging facility. Using this loadbalancing practice there are 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 EE LoadBalancer

Page 3: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

LoadBalancer Sequenz(UML)

Java EE LoadBalancer

Page 4: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

In JConsole MBeans Tab: Use LoadBalancer Monitor Functionality Customize run-time Property: EndPointAllocatedBytesEndPointMaxThreadPoolwhile calibration process.

JMX realtime Profiling & Monitoring of JSF-CDI Bean Propertie; navigate in JMXBean Attributes: RechnerBeans := Rechner[]

Java EE LoadBalancer

Page 5: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Run-time Customizing of LoadBalancer Parameters - The Profiling & Calibration Process

JMX Run-time Customizing of LoadBalancer 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 your Java WebApplication[JSF, WebService Endpoint].

Monitor system changes in relation to your new Attribute settings (in Attribute Chart mode):

CurrentEndpointAllocatedBytes:[Information Readonly] 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:[Information Readonly] 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 .

Where the Values come from? => memory critical Ressource := Servlet-Thread:= url-pattern

In Java EE Web Application Configuration (web.xml) the LoadBalancer is configured as a filter. So the LoadBalancer reads his Policies from his filter configuration. LoadBalancer Filter url-pattern is mapped to memory critical Ressource url-pattern. Therefore the LoadBalancer gets his Monitoring Information from memory critical Thread JMX Beans and send the result to the associated LoadBalancer JMX Beans.

Java EE LoadBalancer

Page 6: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

EndpointTotalAllocatedBytes:[Information Readonly] 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 .

EndpointTotalAllocatedBytesRelative:[Information Readonly] 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:[Information Readonly] 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:[Information Readonly] 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:[Information Readonly] 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)

EndPointCountRelative:[Information Readonly] Amount of all Endpoint threads in relation to all JVM threads.

Java EE LoadBalancer

Page 7: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

CurrentEndPointCpuTime: [Information Readonly] 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.

Waiting_Thread_Count:[Information Readonly] Amount of all Endpoint threads waiting(THREAD_BLOCKING_TIME) until the Request-pool has new free thread resources

Current_Thread_Pool_Count:[Information Readonly] Amount of free Endpoint thread resources. Running Endpoint Threads = MAX_THREAD_COUNT-Current_Thread_Pool_Count

Prerequisites

Java EE LoadBalancer requires:

• Java Servlet Engine(Tomcat,...) with Servlet Specification 2.3 or later• Java SE 1.5• For Profiling & Runtime Customizing[Best Fit Calibration]: enabled JMX connection• Some Features like Endpoint Heap Memory Allocation Measuring requires Java SE 1.7

Java EE LoadBalancer

Page 8: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Ressources:Java EE LoadBalancer Project Features:

White paper: https://java.net/projects/j2ee-loadbalancer/pages/Home Source Code Repositories: https://java.net/projects/j2ee-loadbalancer/sources Downloads: https://java.net/projects/j2ee-loadbalancer/downloads

Benefit:

• individual Best Fit Setting [Java WebApplication, Machine] • individual url-thread-based Profiling, Monitoring and Calibration• SUN API • Free SUN/IBM supported standard Tools[Helpcenter, JConsole]• JConsole pluggable MBeans/MXBeans • Improve QA [Mapping Nonfunctional Requirements to url-based User Activities] • no hardware or software architecture changes required• fail-over functionality• usability in test & runtime environments

Java EE LoadBalancer

Page 9: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Lizenz

Java EE LoadBalancer is open source but not free.

• Use in Test and Development Environment is for free – with the requirement that any copy acknowledges the original product and its developers.

• For use in Production Environment get in touch with us.• https://java.net/projects/j2ee-loadbalancer/pages/License

Java EE LoadBalancer

Page 10: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Lizenz

Java EE LoadBalancer

Page 11: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Use Case: Regressionstest

Compare CPU and Heap parameter before and after user activity functional testingas part of Non Functional SystemTesting using appropriate url-mapping.

Java EE LoadBalancer

Page 12: Stellen besetzen. Erfolg ermöglichen. Java EE LoadBalancer.

Stellen besetzen. Erfolg ermöglichen.

TowerConsult GmbH

Use Case: Monitoring & Controlling Long Running Task

Java MX Service Channel Technology manages the Flow of a Long RunningJava Server Face Task in a J2EE WebContainer Environment using SUNJConsole.

Java EE LoadBalancer