cbdw2014 - profile and monitor with profilebox
DESCRIPTION
This session will cover how to tune your Box applications with our ProfileBox module that ties your apps performance metrics right inside of FusionReactor.TRANSCRIPT
ProfileBoxPerformance Monitoring for ColdBox
Fusion Reactor
Your New Best Friend
FusionReactor: Benes and Feats.
● Real-time monitoring of your ColdFusion servers
● Massive insight into the most granular details of request performance
● Robust notifications● Analytics, UX insights, and 1 billion other
things
ProfileBox
Your Best Friend’s Best Friend
ProfileBox: Introduction
● Profile any and all ColdBox events● Get metrics on layout and view renderings● Trace request collections● Custom annotations for object profiling● CacheBox profiling● Much more!
ProfileBox: Why???
● Performance is the foundation of successful applications
● Complexity + Entropy =
KNOWLEDGE IS POWER!
ProfileBox: Installation(Spoiler: It’s super easy!)
ProfileBox: Installation
1. Purchase ProfileBoxhttp://www.ortussolutions.com/products/profilebox
2. Download ProfileBox module3. Add module to your ColdBox application4. Configure module with your key and email5. Reap the benefits of awesome profiling!
ProfileBox: Installation
// config/settings.json.cfm
{
“licenceKey”: “myLicenseKey”,
“licenseEmail”: “[email protected]”,
...
}
Installation Complete!(Now let’s see it in action!)
Configuring ProfileBox
Configuration Options● profileHandlers
● handlerRegex
● profileViews
● profileObjects
● traceCollections
● traceObjectResults
● traceHandlerResults
● traceAppender
● notifyExceptions
Example #1: Profile an Event
● Prehandler processing● onRequestStart processing● onRequestEnd processing● Basic layout/view rendering
Example #1: History
Example #1: Event Detail
Example #2: View Rendering Metrics
● Prehandler processing● onRequestStart processing● onRequestEnd processing● Basic layout/view rendering● Slow view rendering!
Example #2: View Rendering History
Example #3: Profiling Objects
● Prehandler processing● onRequestStart processing● onRequestEnd processing● Basic layout/view rendering● Hidden object performance cost
Example #3: Object History
Example #4: Custom Notifications
● LogBox integration baked in (min=fatal,
max=info)
● API for more customized notifications
Custom Notification: API Example
getModel( "FRNotify" ).info(
title="Rollout Stress Test (via API)",
message="1000 RPM Threshold Exceeded",
origin="UserAccessService"
);
Custom Notifications Result
User Experience Tracking
// config/settings.json.cfm
“userExperienceTracking”: “true” ...
● Will append tracking script:
<script src="/fusionreactor/UEMJS.cfm" type="text/javascript"></script>
User Experience Tracking
● DB Time: Time in database (includes ORM)
● Web Request Time: Time in ColdFusion/ColdBox
● Network Time: Time from server to browser
● Client Time: Rendering Time
Remember: Perception is everything!
Tips &Suggestions
Tips & Suggestions
● Be modest with your ProfileBox configuration
● Use the Tracer and Notification APIs!
● Experiment, experiment, experiment!
Resources● FusionReactor: http://www.fusion-reactor.
com/
● More About ProfileBox:
https://www.ortussolutions.
com/products/profilebox/