![]() ![]() ![]() ![]() |
|
|
| ![]() ![]() ![]() |
| ![]() ![]() ![]() |
|
Phase | Task | Deliverable |
---|---|---|
Project Planning | Evaluate | |
Analysis | Validate | |
Design | Redesign | |
Code | Optimize | ![]() |
Performance Test | Measure![]() Evaluate ![]() | |
[Deployment] | ![]() | |
My plan is based on the
"Premature optimization is the root of all evil." — Donald Knuth, pioneering computer scientist
|
My Step | Based on | Details | ||
---|---|---|---|---|
![]() | 1. Setup_Environment | 1.1 Create a Topology graph of the hierarchy of routers, servers, and other system elements
[Moved up from their cartridge location] This is stored in a file suffixed with .tpl.
1.2 Define the logical name, host name, OS, Product, and Version of each element on the typology. + The IP address(es) of each element is noted in the Comment section for each element. 1.2 + Procure facilities, furniture, hardware, and software. 1.3 + Install OS, utilities, database, and app software on machines. 1.4 Install Mercury tuning agents and monitors (rstatd) on each host. 1.5 Install Database client and connect it to the Database server. 1.6 Collect settings from servers into the Tuning Console's "System Configuration" tab. | ||
![]() | 2.1 Network_Health_Check measures and remembers the number of hops and latency using tracert between tuning agents on system components. 2.2 Bandwidth_Test measures the data throughput required to download files of known sizes using script "http_downstream_bandwidth" provided run for 20 vusers. 2.3 Network_Diagnosis 2.4 SSL_Test | |||
![]() | 3. Setup_ J2EE_ Transaction_ Breakdown_ Diagnostics | 3.1 Install
MSXML (Microsoft Core XML Services 6.0) downloaded from Microsoft
for Mercury's J2EE Transaction Breakdown Diagnostics Module.
3.2 Install Mercury's J2EE Diagnostic Mediator, activate it, and connect client to it. | ||
![]() | 4. Database_Server_Diagnostics SQL_Profiling | - | 4.1 | |
![]() | 5. System_Validation | - | 5.1 + Create a shell/command script to stop and start all services, plus identify system information (disk space, etc.) before runs.
5.2 + Create a shell/command script to collect test run results. | |
| 6. System_Snapshot | - | 6.1 Create a load-testing script to log in users and initiate a new user session.
6.2 Create a load-testing script to emulate user tranactions. 6.3 Debug configuration settings. 6.4 Run a single user to capture monitoring information that identifies behavior under no load, such as "spikes" during 2-3 hour runs. | |
7. [Max_]Benchmark | Use the load-testing script to 7.1 Identify the optimal number of vusers (load factors) while response time is adequate and no errors occur. 7.2 Identify the maximum number of vusers (load factors) when errors occur, response time becomes too slow, or (most commonly) processing rate declines. 7.3 Resolve transaction failures and errors 7.4 Resolve performance issues | |||
8. [Peak_]Benchmark | previously identified to 8.1 Ramp-up to optimal load factor 8.2 Archive (backup) script and run files so it can be used later as the benchmark to compare the impact of changes to the system configuration (to determine if there was an improvement in performance). | |||
![]() | 9. Scan_Log_Files | - | Identify trends and errors using tuning agents reading server logs generated during test runs. | |
![]() | Troubleshoot: 10.01 Transaction_Failure_Diagnostics 10.02 Performance_Diagnostics 10.03 Slow_Response_Diagnostics 10.04 Transaction Response Time Diagnostics 10.05 Sychronization Diagnostics evaluates threads holding locks. 10.06 Network_Load_Balancer 10.10 Application_Server_Diagnostics 10.11 Application_Server_CPU_Diagnostics 10.12 Application_Server_Memory_Diagnostics 10.13 Memory_Leaks_Diagnostics 10.14 Application_Server_IO_Diagnostics 10.15 JVM_Diagnostics 10.16 Network_Diagnostics | |||
![]() | 11.1 Scan_Recommended_Values | Optimize applications by using tuning agents to compare actual settings against recommended settings. The recommendations from the Mercury Knowledge Base "according to vendor documentation" and can be customized and exported as part of the tuning cartridge. | ||
![]() |
12.1 Application_Tuning 12.2 Server_Tuning 12.3 EJB_Unit_Tuning 12.4 Servlet_Tuning 12.5 JDBC_Optimization | |||
![]() | 13. Generate_Report | Create the tuning session summary report (in MS-Word format) using the Tuning Console's Session Report feature. | - | |
![]() | 14. + Compare_Reports | - | Create reports that compare tuning sessions. |
"Progress Dashboard" The Tuning Console tracks Each time you run this step, an entry is added to the progress dashboard to help you achieve your goals.
The Tuning Console lists all the logs and their properties for each host and service. You can also scan the logs for errors according to predefined rules. You can also define your own rules and export them as part of a cartridge (please refer to the product documentation). Note: 1. Before you can scan logs, you need to install and run tuning agents on the servers where the log files are situated. 2. The log scan step is available only for the services that are handled by the tuning agents. In other words, if the tuning agent cannot handle a particular service, the service's log file cannot be scanned, even if the server itself is running a tuning agent. 3. It is not recommended to scan large logs (>1MB), as this is time- and resource-consuming.
Server configuration tab. After you define the environment in the Topology window, the Console attempts to connect to the tuning agent running on each host in the topology. If a tuning agent has not been installed, or has been installed but not started, the attempt will fail. Make sure that the Console can connect to the tuning agents on the host machines. For details, see the section on tuning in the documentation.
Mercury's Performance Tuning Network at tuning.merc-int.com
is not operational. I filed a bug report on this July 06.
lr8.lrtun81.notconcurrent.bmp
| ![]() ![]() ![]() |
|
| ![]() ![]() ![]() |
| ![]() ![]() ![]() |
| ![]() ![]() ![]() |
|
| ![]() ![]() ![]() |
|
Product | Where | Setting |
---|---|---|
BEA Weblogic 8.1 | ExecuteQueue: |
ThreadsMaximum, ThreadsIncrease QueueLength |
IBM WebSphere 5.1 | Application Servers > "server" > Web Container > Thread Pools: | Minimum Size Maximum Size Inactivity Timeout |
JBOSS | MBean: org.jboss.util.threadpool.BasicThreadPool | MaximumQueueSize MinimumPoolSize MaximumPoolSize |
This setting is about 1/2 the thread pool size.
During development, the server starts quicker when there are less connection pools. In production systems, the pool maximum capacity and the initial capacity are usually set to the same number so that all connection objects are created immediately.
Product | Where | Setting |
---|---|---|
BEA Weblogic 8.1 | JDBCConnectionPool: |
InitialCapacity MaximumCapacity |
IBM WebSphere 5.1 | JDBC Providers > database > Data Sources > data source | Max Connections Min Connections |
JBOSS | In file dataSourceName-ds.xml: |
<Min-Pool-Size>1</Min-Pool-Size> <Max-Pool-Size>100</Max-Pool-Size> |
Product | Where | Setting |
---|---|---|
BEA Weblogic 8.1 | Administration Server scripts startWLS.sh (UNIX) and startWLS.cmd (Windows) in bin folder. | "%JAVA_HOME%\bin\java" -hotspot -Xms512m -Xmx512m -classpath %CLASSPATH% |
IBM WebSphere 5.1 | - | - |
JBOSS | - | - |
Performance Analysis for Java? Web Sites (
Addison Wesley, September 10, 2002)
by Stacy Joines, Ruth Willenborg, and Ken Hygh —
consultants and developers at IBM Software Group at Research Triangle Park, North Carolina.
J2EE Performance Testing (Apress, July 11, 2003)
by
Peter Zadrozny [English/Spanish Blog] (vice president and chief evangelist for Oracle Application Server at Oracle Corporation),
Philip Aston (of BEA) (maintainer of
The Grinder open source Java load testing framework used in the book), and Ted Osborne focus on BEA Weblogic servers
with Panorama.
High-Performance Java Platform Computing: Multithreaded and Networked Programming
(Prentice Hall, (September, 2000)
by Thomas Christopher & George K. Thiruvathukal
Java 2 Performance and Idiom Guide
(Prentice Hall, September, 1999)
by Craig Larman & Rhett Guthrie
is an almanac for the advanced programmer based on Java 1.1,
but still mostly relevant.
Server-Side Programming Techniques (Java(TM) Performance and Scalability, Volume 1)
(Addison-Wesley June 2, 2000)
by Dov Bulka
Java Performance Tuning (2nd Edition)
by Jack Shirazi
covers Java 1.4
Building Scalable and High-Performance Java Web Applications Using J2EE Technology
(Addison-Wesley, December 27, 2001)
by Greg Barish
explains JSP, Servlets, EJB's, JMS, JDBC, etc. in the context of
how they contribute to web application scalability and performance.
Arcturus Tech's Autopilot WL provides intelligent SOA and J2EE monitoring in that
their embedded "Knowledge Engine" auto-tunes WebLogic 8.1 and the JVMs they use
to provide root cause analysis.
| ![]() ![]() ![]() |
| ![]() Including comments make it more difficult for competitors to reverse engineer ("steal") code. | ![]() ![]() ![]() |
| ![]()
| ![]() ![]() ![]() |
| ![]() ![]() |
| ![]() ![]() ![]() |
![]() ![]()
![]()
[Managed] Code Optimization, Sept. 10, 2002
.NET Show "Enter the Programmer" interview of Ivan Mladenov, Patrick Dussud, and Gregor Noriskin about their
![]() This lists information about the memory usage of the process associated with the specific process id:
| ![]() ![]() ![]() |
| ![]() ![]() ![]() |
| ![]() ![]() ![]() |
|
Platform MBean | Description |
---|---|
java.lang.management.ClassLoadingMXBean | Class loading system of the Java virtual machine. |
java.lang.management.CompilationMXBean | Compilation system of the Java virtual machine. |
java.lang.management.MemoryMXBean | Memory system of the Java virtual machine. |
java.lang.management.MemoryManagerMXBean | Memory manager in the Java virtual machine. |
java.lang.management.MemoryPoolMXBean | Memory pool in the Java virtual machine. |
java.lang.management.GarbageCollectorMXBean | Garbage collector in the Java virtual machine. |
java.lang.management.ThreadMXBean | Threading system of the Java virtual machine. |
java.lang.management.RuntimeMXBean | Runtime system of the Java virtual machine. |
java.lang.management.OperatingSystemMXBean | Operating system on which the Java virtual machine is running. |
java.util.logging.LoggingMXBean | Logging facility. |
These names are used by the
Sun Reference Implementation (RI) that need to be added to the CLASSPATH.
In its zip lib are jmxri.jar (containing implementations of JMX APIs and the agent),
and jmxtools.jar (containing adaptor classes such as the HTTP protocol adaptor,
class com.sun.jdmk.comm.HtmlAdaptorServer in Sun’s Java Dynamic Management Kit (JDMK)).
BEA's JRockit Management Console prefixes their JMX packages with
"jrockit" rather than "java.lang".
IBM and the Adventnet Agent Toolkit JMX Edition use other approaches.
Because JMX is a generic, unified, and standardized framework (and protocol), it has enabled a new industry of JMX management clients (managers) in tools for J2EE tuning, testing, tracing, and monitoring.
The services JMX provides for application management are:
Images from http://skillport.books24x7.com/book/id_5115/toc.asp Managing Java Applications Using JMX API SkillSoft Press © 2003
There are 3 levels to the JMX architecture:
The m-let service enables the dynamic loading of MBeans in the JMX agent at run time, and the relation service creates and maintains relationships between MBeans.
Different MBean interfaces differ in how they expose the management interface of the application resource to the agent:
public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException;
To create and register a standard MBean:
http://www-128.ibm.com/developerworks/websphere/downloads/
| ![]() ![]() ![]() |
![]() Portions ©Copyright 1996-2014 Wilson Mar. All rights reserved. | Privacy Policy | Last updated
| Related Topics:
| ![]() ![]() ![]() |
![]()
| Your first name: Your family name: Your location (city, country): Your Email address: |
Top of Page ![]() Thank you! |