Presentation is loading. Please wait.

Presentation is loading. Please wait.

ColdFusion Performance Troubleshooting and Tuning

Similar presentations


Presentation on theme: "ColdFusion Performance Troubleshooting and Tuning"— Presentation transcript:

1 ColdFusion Performance Troubleshooting and Tuning
Grant Straker Technical Director Straker Interactive CFUNITED – The premier ColdFusion conference

2 What I’ll Cover Why we need to performance tune
Understanding the architecture Principles of Troubleshooting / Tuning How to setup a Test Rig Troubleshooting / Tuning process Caching Strategies Memory Leaks June 28th – July 1st 2006

3 Technology Gap Acceptable Deployment Time Technology Gap Time
Application Load / Complexity 1950 1980 2000 Year June 28th – July 1st 2006

4 CFMX Architecture June 28th – July 1st 2006

5 Principle One 3 Sources of performance problems
CPU Bottleneck (Threads) Memory Management Network / Disk (IO) problems June 28th – July 1st 2006

6 Principle Two To find the issue you will have to:
Simulate the load under which the system is failing Record the relevant diagnostics when the system is failing Interpret the results and adjust the application code and/or server configuration accordingly June 28th – July 1st 2006

7 Principle Three There are 5 things you can adjust (tune) to try and resolve any issues: Application Code ColdFusion Administration Settings Application Server Settings (JRun / JVM) Web Server Settings OS & Network Settings June 28th – July 1st 2006

8 Troubleshooting Prerequisites
Getting up-to-date ColdFusion Jrun June 28th – July 1st 2006

9 Metric Logs /CFusionMX/runtime/servers/default/SERVER-INF/jrun.xml
/jrun4/servers/[instance name]/SERVER-INF/jrun.xml busy - Threads that are running (executing code) this number will not exceed jrpp active threads for JRun or simultaneous request set in the cfadmin total - Total number or jrpp and web threads that are currently available. June 28th – July 1st 2006

10 Create a trace log All requests not just current request (cfdebugging)
Can be added to give more granular details Easily turn on/off Low overhead SeeFusion June 28th – July 1st 2006

11 Load Testing Accurately Simulate Real Load
Benchmarks Input Users / Requests Output Throughput CPU JVM Threads June 28th – July 1st 2006

12 Options Paessler Web Stress Microsft Web App Stress Tool
Mercury LoadRunner Segue Silk Performer Appperfect June 28th – July 1st 2006

13 Test Rig - Debug Console
Garbage Collection JRun Metrics Server Stats CF Error Log Trace Log June 28th – July 1st 2006

14 Thread Dumps Tell us low level information about current running processes / Threads in the JVM Give us diagnostics Will pinpoint performance bottlenecks 99% of the time Are easy to take but require a bit of understanding Take 3, 15 seconds apart – check for common threads across all 3 dumps June 28th – July 1st 2006

15 Troubleshooting Process
Simulate Load Review Debug Output Take Thread Dumps Adjust Code Repeat until resolved June 28th – July 1st 2006

16 Tuning JRun Jrun.xml Scheduler Service internal Jrun service that handles the queuing of threads to the processor Proxy Service internal Jrun service that handles the connection between native web servers (IIS, Apache) and Jrun activeHandlerThreads is the most important attribute June 28th – July 1st 2006

17 Tuning JRun Continued…
Active Handler Threads – 25 default for both SCHEDULER and PROXY services. Recommend 25 Per processor (4 x processor = 100) Set too low = bottlenecks, thread deadlocks Set too high = excessive context switching Needs to be tuned June 28th – July 1st 2006

18 Tuning JVM -Xmx most important – 1GB max on windows
-Xmx too big = long GC cycles -Xmx too small = OOM Errors Permsize also important GC monitoring Various switches to assist June 28th – July 1st 2006

19 Tuning JVM continued… Different Types of Collectors
Low Pause Parallel -XX:+UseConcMarkSweepGC -XX:+UseParNewGC Parallel Scavenge -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy -XX:+AgreesiveHeap June 28th – July 1st 2006

20 Alternate JVM’s JRockit (BEA) IBM
Not all JVM’s are the same and need to be thoroughly tested before switching. June 28th – July 1st 2006

21 Java 1.5 Not a currently supported version of CFMX
Will run on CF7.1 and JRun updater 6 Much better performance Excellent debugging June 28th – July 1st 2006

22 Memory Leaks Prevention is easier than diagnostics
Requires Java profiling tool to accurately identify Easier to find in Java 1.5 JVM’s If memory increases after forcing GC June 28th – July 1st 2006

23 Caching Strategies Store instantiated objects in application scope – careful as incorrectly scoped variables may cause memory leaks Memory Caching Limited by size of Heap Requires and architecture for clearing cached item June 28th – July 1st 2006

24 Database Performance JDBC Trace Tools SeeFusion Maxrows
Only use “Select *” if you really have no option Use cfqueryparam to increase query performance Use blockFactor to increase query performance June 28th – July 1st 2006

25 Coding for performance
Don’t Run a query larger than the size of the heap Ensure all your variables and functions stored in persistent scope are var’ed. Code to allow for slow or missing connections to the database or file system Don’t run process intensive external calls on every request Ensure you use all the caching options available Tune your server for your application June 28th – July 1st 2006


Download ppt "ColdFusion Performance Troubleshooting and Tuning"

Similar presentations


Ads by Google