CF 8 Monitor: what's the impact on production? you may be surprised
The new CF8 monitor is of course very powerful, and naturally some are immediately concerned about its overhead, especially if they're considering running it in production. And it's indeed true that depending on what you enable, it can be very resource-intensive and could even bring down a server under load. But you don't NEED to enable all the features of the monitor to get benefit. I'll explain here what they are and what their impact is. In my next entry, I'll show you how you can even get value from the monitor even if you don't enable ANY of the monitoring features. Sound illogical?
The point to note is that there are three buttons at the top of the monitoring page which "start" different monitoring features. So what are the implications of starting each of the optional monitoring features?
- start memory tracking: this has the highest overhead, very substantial. Even on a low-traffic developer machine, you'll see a big hit from running this. Reserve its use for only brief periods (minutes, seconds) to gather some info for analysis. Use in production only in emergency.
- start profiling: this has much less overhead. The help page for the monitor calls it "minimal"
- start monitoring: again, as with profiling, it's labeled as having "minimal" overhead.
Definitely check out that help page (from the front page of the monitor) to learn more about what each button does.
So what value is there with none of them enabled? I'll pick that up in the next entry.
But if you hear someone say "don't use the monitor in production", please make sure they're clear on all this. There are 3 features you can enable, or none at all, and each provides different info at different costs--some of it zero. Who says there's no such thing as a free lunch?


I'm just saying - keep it in mind.
Thanks,
Hemant
Still, as the next entry clarifies, there does seem to be an awful lot of good info that can be obtained even without ANY of the "start" features enabled. And that, at a minimum, seems an excellent reason to still use the monitor in production. People just need to be sensitive to what costs what. :-)
The memory tracking is, indeed, fairly resource intensive (I seem to recall about a 20-30% overhead in most situations but higher during extensive object creation, e.g., framework startup). I would definitely advise keeping memory tracking off in production except for very brief periods to debug / analyze specific problems. The main impact seems to be that memory usage increases (presumably to store the data that lets CF8 track memory usage?) and that memory does not always seem to be freed up when memory tracking is turned off.
My experience so far has been that monitoring and profiling truly do have minimal impact and can be left enabled all the time. That has been on Red Hat Linux and Mac OS X, on fairly fast servers. I'm sure it's a YMMV kinda thing tho'...