I was lucky enough to be asked to play some with the Fusion-Reactor 2 beta. I asked if I could write a review and was given permission. (I did pass this review by them first, but more to ensure I didn't screw things up.) If you haven't heard of Fusion-Reactor, here is a brief overview. Fusion-Reactor is a J2EE servlet that runs with your ColdFusion server. It gives reports on requests and helps you monitor the general health of your server. A competitor would be SeeFusion, and in a minor sense, my project, Starfish. I plan on reviewing SeeFusion later in the year, and to be honest, I'm sure both put Starfish to shame.
I had not played much with the earlier version of Fusion-Reactor. Right when I had asked them for a review copy the beta of version 2 was coming out. So some of what I talk about may already be in the released version, and since I'm working with a beta, things may change before the final release.
To begin working with Fusion-Reactor, you run the installer. It actually sniffed the servers on my box and noticed my CFMX 6 and CFMX 7 servers, along with the Flash Data Services beta. I selected my CFMX 7 box, entered a few details like the password I wanted to use, and that was it. If it restarted ColdFusion, I didn't notice. (It must have.) Once installed you can start using the Fusion-Reactor administrator:
There are a lot of options here, but lets take a look at a few of them. The Running Requests page obviously shows all running requests. On my home server, this was normally blank. I had to find a particularly slow site on my box in order to make it actually show something, but this is to be expected on a personal development box. What is of more interest is the Request History page.
As you can see, this report lists all requests along with the time to complete and memory usage at that time. What I'd like to see them add here is a flag for long requests. Kind of like how the ColdFusion debugger will flag them. You can tell the page to refresh automatically and monitor looking for "bad" requests that are eating up time and memory.
Clicking on a particular request gives you a lot of detail about the request, including headers and cookie information. One extremely sweet new feature is the addition of a JDBC wrapper. Essentially, you can replace a "normal" CF DSN with a driver that uses the wrapper provided by Fusion-Reactor. Once done, the wrapper will log the SQL used by queries on the page (including showing values for cfqueryparam tags). It will show the execution time, both on the back end and for ColdFusion, and how many rows returned.
Another feature of this wrapper is a row limiter. So if a user writes some bad SQL that returns 100,000 rows, you could actually limit the result set to some sane number like 1000. Now to be honest, I don't think I'd use that. I'd much rather have an event like that logged so I could hunt down the programmer and read him the riot act. Band aids like these worry me in that I think they have the potential to hide a serious problem. While I guess that is good... my instincts say I'd rather ensure the problem gets fixed.
Either way - I think this is one of my favorite features. I'm currently using it to profile BlogCFC and find places where I can make improvements.
Another interesting feature is the Request Capture setting. This lets you capture an entire request and response. While this could fill up a hard drive pretty quickly, it could be incredibly useful for debugging.
Fusion-Reactor supports logging of AMF requests, both "old" style and the new version in Flex 2. At the time of my review though, the layout of the reports were still in flux, but the information was being recorded. I could see my Flex 2 AMF requests and the information being requested. Pretty handy stuff!
Another significant new feature of Fusion-Reactor 2 is the Enterprise Dashboard. This lets you monitor any number of machines and get a quick and graphical look at the health of your network:
During my testing, I noticed that the machine in the screen shot above would slowly turn red when I ran a slow running request. As you can imagine, if you had a cluster of machines this would be a vital tool to have running. You can also configure Fusion-Reactor on what "bad" is - so you don't get false-positive responses. Fusion-Reactor also supports grouping in case you have an even larger number of machines. And last but not least - you can have one machine monitor another. If the machine goes down, Fusion-Reactor can notify you via email.
So while the Fusion-Reactor product has it's own administrator, you don't actually have to use it. Fusion-Reactor ships with FRAPI, an API to their own server. So for example, you could do something like this in your ColdFusion code:
<cfset frapiClass = createObject("java", "com.intergral.fusionreactor.api.FRAPI")>
<cfset frapi = frapiClass.getInstance()>
<cfoutput>Is FR Running?: #frapi.isFusionReactorRunning()#</cfoutput>
What is neat about this is that you could tie this to ColdFusion's Enterprise Gateway system. Imagine having Fusion-Reactor send you a SMS when requests start taking too long to process? Or if a machine crashes in a cluster? All of this would be possible with FRAPI.
Another feature of Fusion-Reactor is the Content Filter. Now I have to admit that I don't like this feature. It will look for text (with either plain text or regex) in a request and replace it with something else. So for example, you could use it to quickly replace Macromedia with Adobe. While this is cool - I don't think such a tool should be doing this. Then again, I've never had a super-urgent need to make such a text change in mere seconds. If I did - I'd use this - but would then immediately start doing the "real" work behind the scenes.
So I've only begun to touch on the features of this application, but so far I'm pretty darn impressed. I plan on installing this on my main machine and see how the box is holding up. Once Fusion-Reactor is released I'll be sure to let you know. I'm sure there will be some additional changes between now and the release date!
Archived Comments
very interesting! I am looking into using this for one of my CF Shared Hosting boxes, I could see this being very handy...although doesn't this replace the version of JVM that CF comes with? I thought that would void the warranty :)
No it does not. It simply adds a new servlet to work with CF. To be honest, I'm not 100% sure. I think it would safe w/o worrying about voiding your warranty. At worst, a call with CF support may ask you to remove FR and return to a "virgin" install (if that makes sense).
Definately makes sense. I thought I remembered reading that on their site at one time, but I can't seem to currently find that anymore. good to know.
Could you use the Content Filter to translate SES urls instead ISAPI rewrite? Just thinking aloud.
I've been using v.1.07 for a few months now. Nice app. Nice price! Looking forward to version 2.
Bryan, I don't believe so, but you may want to double heck. It is my understanding that it only changes the _content_ of the response.
Hey ray - what platform did you do your testing on? I am curious if Version2 allows you to view stack traces under Solaris (current 1.x does not).
Windows XP Media Center Edition.
Mo, as the beta stands so far, yes it will. I'm on the beta as well and have been testing under Solaris exclusively lately. They definitely have some issues to work out, but, overall, it's a great product!
My company has been using Fusion Reactor for a couple of months now and it's been invaluable on both our development servers and our production servers to track down issues and pinpoint which applications have caused lockups or crashes because of badly written code, SQL or quirky third party JDBC drivers.
We tested SeeFusion and found it to be far less user friendly than Fusion Reactor with several missing features compared to the 1.0.x of Fusion Reactor. The only obvious benefit, JDBC query tracing, has been added into the Fusion Reactor 2.0 release.
Hi All,
FusionReactor doesn't change your JVM. FusionReactor supports Java 1.5 as well as 1.4.2, but it doesn't force you to change and all of the features are available on either JVM.
Stack Tracing on Solaris is supported in FR2.
We are going to release FR1 Solaris native libs soon, so that you can get stack traces on Solaris with FR1.
URL rewrites are slated for a later release (not in FR2).
Ray, thanks for this post, and the feedback!
Less than 20 minutes into the demo we found the cause of an issue thats been haunting us for 2 weeks now.
I'm sure our accounting dept will be asking who Fusion Reactor is by the end of the day. :)
Nice! I've just started testing out SeeFusion, and am glad to see there's another option here.
One question... does anyone know if Fusion-Reactor will run on Blue-Dragon (SeeFusion currently does)?
FusionReactor runs on CF6.1, CF7, Mystic, BlueDragon, FDS 2.0, JRun 4+Cheetah, JBoss, Tomcat + others. Native Installers support Windows, Linux + Solaris. Manual installation is possible on all other platforms.
FusionReactor will scan and detect all of the different server types on a machine and install itself with one-click from the instance manager into the servers you select.
I've been meaning to look at something like this for ages, and didn't really have the time to look at it so thanks ray.
One question I do have is, if you have set up multi-servers do you need a license for each cf instance? Is is it for thw whole base system no matter how many instances.
The next question then is the way we have our clusters set up is as a hot stand by sharing the same e:\ where the instances are stored, Does this mean for a single cluster we would need 2 licenses as they are different servers but only one is running at a time (We have bought CF for each node even though only one runs at one time)
Once again Thanks Rays
Hello,
1. You need a single license per physical server - it doesn't matter how many instances are on that server, they're all covered.
2. You also require a license for the 'hot standby' server as this is also a separate box.
I would recommend the FusionReactor Enterprise edition in your case - as this includes the Enterprise Dashbaord, which shows a realtime 'health' status of your production environment (all registered servers/instances) from a single window. Note: FusionReactor also supports J2EE applications e.g. JBoss, Tomcat as well as CF