32
ColdFusion is Racecar Fast! (Or, ColdFusion Performance Best Practices) The Adobe ColdFusion Summit 2014 - Las Vegas

Cold fusion is racecar fast

Embed Size (px)

DESCRIPTION

ColdFusion is Racecar Fast (Or, ColdFusion Performance Best Practices)

Citation preview

Page 1: Cold fusion is racecar fast

ColdFusion is Racecar Fast!

(Or, ColdFusion Performance Best Practices)

The Adobe ColdFusion Summit 2014 - Las Vegas

Page 2: Cold fusion is racecar fast

We are Webapper

● Co-founded in 2001 by two former members of Allaire Consulting Services

● Speakers today:o Mike Brunt: Co-Founder, Director of Performance

Engineering Serviceso Rex Aglibot: Senior Performance Engineero Patrick Quinn: Co-Founder, CTO

Page 3: Cold fusion is racecar fast

3 Things

Page 4: Cold fusion is racecar fast

One more thing...

+ =

Page 5: Cold fusion is racecar fast

Webapper on the Web

www.webapper.comwww.seefusion.comwww.coldfusionsupport.net

Page 6: Cold fusion is racecar fast

Oh, that...

Page 7: Cold fusion is racecar fast

SeeFusion 5!

Page 8: Cold fusion is racecar fast

‘Splain the session title, please?

● Indy 500o World’s largest auto raceo We’ve been tuning it in traditional hosting

environment for 5 years● New hosting infrastructure and site migration

in 1 week! (~8 individual domains)● Adobe case study: http://adobe.ly/1r9hULg ● And, well, ColdFusion is fast!

Page 9: Cold fusion is racecar fast

Results

● 50 r/s X 8 servers (max)● AWS Auto-scaling ● Zero bottlenecks (literally)● Zero slowdowns● Active/passive data tier (SQL Server)

Page 10: Cold fusion is racecar fast

The Webapper Way

● How to tune/troubleshoot a ColdFusion servero Empiricalo ~ 5 different data sets (logs, memory/thread

profiling, monitoring tools)● PASS● How to prioritize “TNT” problems

Page 11: Cold fusion is racecar fast

Today

● Good general settings for ColdFusiono Memory and thread settingso The ColdFusion connector!

● Live load● Q&A

Page 12: Cold fusion is racecar fast

The Performance and Stability Stack

Page 13: Cold fusion is racecar fast

PASS Priorities

Page 14: Cold fusion is racecar fast

“The Engine Room”

The Java Virtual Machine = the real meaning behind the phrase “ColdFusion is Java.”

Page 15: Cold fusion is racecar fast

Great Default JVM Settings - 64 bit

-server -Xms6144m -Xmx6144m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -verbose:gc -Xloggc:webapperGC219.log -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -Xss256k -XX:+CMSClassUnloadingEnabled - -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68 -XX:CMSFullGCsBeforeCompaction=1 Dsun.io.useCanonCaches=false -XX:MaxPermSize=640m -XX:PermSize=640m -XX:+UseConcMarkSweepGC

Page 16: Cold fusion is racecar fast

Wait, what? JVM Settings Explained

-server

-Xms6144m -Xmx6144m

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -verbose:gc -Xloggc:webapperGC219.log

Page 17: Cold fusion is racecar fast

JVM Settings Explained

-XX:NewRatio=4 -XX:SurvivorRatio=8

-XX:+UseCompressedOops

-Xss256k

-XX:+CMSClassUnloadingEnabled

-XX:+UseParNewGC

Page 18: Cold fusion is racecar fast

JVM Settings Explained

-XX:+DisableExplicitGC

-XX:+UseCMSInitiatingOccupancyOnly

-XX:+CMSScavengeBeforeRemark

-XX:CMSInitiatingOccupancyFraction=68

Page 19: Cold fusion is racecar fast

JVM Settings Explained

-XX:CMSFullGCsBeforeCompaction=1

-XX:MaxPermSize=640m -XX:PermSize=640m

-XX:+UseConcMarkSweepGC

Page 20: Cold fusion is racecar fast

Threads and all the rest...

● “TNT checklist” (~55-point inspection)

Page 21: Cold fusion is racecar fast

Threads and all the rest...

● Important thread pools:o ColdFusiono Tomcato Web server connector

Page 22: Cold fusion is racecar fast

Threads and all the rest...

http://weblogs.asp.net/owscott/windows-8-iis-8-concurrent-requests-limit

Page 23: Cold fusion is racecar fast

Recommended Thread Settings

● runtime/conf/server.xml:<Connector port="8012" protocol="AJP/1.3" redirectPort="8445" tomcatAuthentication="false" maxThreads="525" connectionTimeout="60000" /><Connector executor="tomcatThreadPool"... />

(Note: connectionTimeout is in milliseconds)

Page 24: Cold fusion is racecar fast

Recommended Thread Settings

● workers.properties:worker.{instance}.max_reuse_connections=500worker.{instance}.connection_pool_size=500worker.{instance}.connection_pool_timeout=60(Notes: connection_pool_timeout is in seconds;must be the same as server.xml's connectionTimeout)Reference: http://blogs.coldfusion.com/post.cfm/tuning-coldfusion-10-iis-connector-configuration

Page 25: Cold fusion is racecar fast

Recommended Thread Settings

● ColdFusion Administrator:

Page 26: Cold fusion is racecar fast

The Web Server Connector

Page 27: Cold fusion is racecar fast

The Web Server Connector

Page 28: Cold fusion is racecar fast

Start your engines!

● Live load tests● 2 c3.2xlarge EC2 servers (ColdFusion 10)● 1 c3.2xlarge EC2 server (MySQL)● PetMarket application● JMeter for load

Page 29: Cold fusion is racecar fast

Summary

● Tune memory● Tune threads● Monitor!● Know thy metrics (logs, monitors, etc.)

Page 30: Cold fusion is racecar fast

Q&A

● Questions?● Comments?● Commentary?

Page 31: Cold fusion is racecar fast

Contact Us

● via Twitter: @IamSigmund (Patrick), @cfwhisperer (Mike), @superex2000 (Rex)

● via Email: [email protected] ● Amazon Web Services:

[email protected]● www.coldfusionsupport.net

www.webapper.com www.seefusion.com

Page 32: Cold fusion is racecar fast