I was talking to someone the other day about monitoring servers and suggested they took a look at the CfTracker project and they were impressed by what it does. I thought that maybe other people aren't aware of what it does so here is a quick overview of what I use it for.
At work we have multiple servers, some of which run multiple ColdFusion applications. All the servers have either SeeFusion or FusionReactor running on them, but I still find myself using the free CfTracker application by David Boyer. Now before I continue, I don't consider cfTracker to be a replacement for either FusionReactor or SeeFusion. Both are great at showing you what your server is up to and helping diagnose performance issues. I use cfTracker as a complimentary tool to these commercial products. So what does CfTracker offer that the others don't?
CfTracker allows you to do is to see how much resources each application is using. For example I can see in real time, which application has the most active sessions. I can even drill down and see what each of those sessions contains.
When I had an issue with bots creating lots of sessions, I found CfTracker to be incredibly useful for killing bot sessions. You can get a pretty good idea which sessions are from bots becuase you'll see lots of sessions created from the same IP address. OK, this could be because of a proxy, so if you're worried then each session also shows you when the session was created and last accessed. If the session creation and last accessed times are the same then it's a pretty safe bet that the session isn't required anymore. There is also the ability to kill sessions based on a number of filters, then one I used was the IP address.
Query Cache Management
One of ColdFusion's killer features is the ability to cache queries, which can give hige performance gains. The down side to this is sometimes you want to refresh the cache for a particular query. This can be a real pain and usually requires the "sledgehammer to crack a nut approach" of clearing the entire query cache, or writing your own code to handle this requirement. Well, guess what, CfTracker allows you to clear individual queries from the cache by simply ticking a box next to each SQL query (you can see the statement) that's in the cache. Dead handy!
This isn't a feature I use very often but it can be pretty handy. With all the MVC frameworks I've used they all have the ability to restart them by passing in a querystring parameter. 99% of the time this is great. What concerns me about this is that you usually secure it with a password (so that the application can't be restarted by a rogue visitor), this password is passed in the url meaning that it is stored in the log files and therefore can appear in statistics reports and of course your browser history. I don't really like this but it is a pragmatic approach. CfTracker allows me to restart the application without having to pass the password in the URL and, if I want to, I can also kill all the sessions for that application at the same time.
Tuning the JVM
If you like nice charts this is the features for you! When it comes to the dark art of JVM tuning, then there are several settings which depend on the way that you're application uses memory. If you're application mostly uses lots of transient variables (only exist for the request), then you want to set up your JVM differently to an application that mostly uses lots of variables held in application/server/session scopes. cfTracker has some nice charts which show you how the JVM memory is being allocated.
So there you go, a quick overview of CfTracker. It does have a few more features I haven't mentioned but hopefully you'll have a better idea of how CfTracker could be useful to you.