Steven Erat's Blog Steven Erat Photography
 
 
 

TalkingTree  ColdFusion 9.01 Server Monitoring Enhancements

 

I began this thought as a comment to Adobe CF QA engineer Sagar Ganatra's blog entry describing the new Server Monitor enhancements in ColdFusion 9.01 updater, however, as it grew lengthy I decided my own blog post would be a more appropriate venue.


I'll add that the main reason for why one would want to run the ColdFusion Server Monitor on its own port via the Jetty implementation is that until now requests from the Server Monitor would go through the JRPP request pool, thereby adding additional traffic to the JRun active request pool, but more importantly if the JRun active request pool was queuing then the data refreshes in the Server Monitor would also queue and the Server Monitor may appear to hang as well. By establishing a separate request pool and port for Server Monitor requests in ColdFusion 9.01, the Server Monitor will not encounter a blocking situation as it would do previously.

Any general discussion of the Server Monitor should include the caveat that the use of Profiling, Monitoring, and Memory Tracking are not intended for production use (blanket statement: see comments for more on that). Moreover, if Memory Tracking is enabled in production, perhaps to help diagnose a prod performance problem, that it will only further decrease server performance. On 3 occasions in the last year alone I've helped ColdFusion shops that shot themselves in the foot by doing this. The impact to performance was substantially worse when enabled, and having them disable it immediately alleviated most of the problems, albeit not the problem that initially prompted them to enable the tracking.

Nice enhancements to Server Monitor in the future might include:

  • Persistant Metrics: The ability to persist the Server Monitor data to a database. A restart of CF will clear data as of now. A use case would be for load testing scenarios where the a a variety of metrics need to be quantitatively analyzed, which cannot presently done easily. Ideally, you'd want to know performance metrics at different points into a load test such as during the ramp up, after X minute intervals, and during cool down.

    A second use case would be the ability to produce reports to monitor server health over time, perhaps by providing the ability to generate weekly reports of key data, possibly with green and red arrow indicator to visually identify metrics that have improved or worsened.

  • CF Request Pool Ratios: Add the ability to analyze incoming requests to determine the real time ratio of CF request types such as CF Templates, CFCs, Flash Remoting, and Web Services. When expressed as a percentage, it could used to correctly determine the values to use in the Request Tuning part of the ColdFusion Administrator. Throughout much of my experience I have found that CF shops rarely set the Request Tuning values to an appropriate range, either letting them remain unchanged at the default, or increasing them way out of range (into the hundreds even).
  • Request Tuning Calculator: Provide a real suggested starting point for all Request tuning parameters including the JRun active and queued sizes based on the number of CPUs/cores and processing speeds. Presently, even in CF 901, a server will install with a default set of values that will the same on a small box as it would on a beefy production box. To do this correctly, the total number of instances used to process production load would also have to be incorporated for proper per-instance tuning. Having a Server Monitor Request Tuning Calculator would be a big plus towards helping server admins find the right starting range for their particular hardware.
  • Out of Process Memory Tracking: Since Memory Tracking is known to consume significant resources while tracking (a Heisenberg conundrum?), perhaps Memory Tracking could be done out of process over RMI or similar, akin to the JRockit Mission Control memory analyzer (which I've used for ColdFusion, but interpreting the data is not very intuitive).

 


Comments

Hi Steven -

I was under the impression (mostly from research done by Charlie Arehart) that enabling Profiling and Monitoring in production was OK, and that you only took a real hit when you enabled Memory Tracking. Is this no longer the case?

brian


I may have generalized in the description. Yes, Charlie has reported that Profiling and Monitoring do not impact performance to any significant proportion, and that Memory Tracking does. I lumped together here though because Adobe doesn't offer any documentation on the subject of which to use in production or which not to use (AFAIK). Lacking specific documentation on the topic, its better to generalize by saying don't turn any on in production (unless you're already familiar with using Server Monitor). I say this because for those shops where I've diagnosed this problem, the reply was consistently that a) they didn't know that memory tracking impacts performance, and b) they didn't have much experience using Server Monitor except as a last ditch effort to understand their exisiting problem.


Good enhancements Steve - make sure you log em :)


I emailed the engineering team my suggestions, after a conversation with them. I understood they would enter enhancements as needed, so I didn't enter them in bug tracker. I probably should though, even if they close it as a dup.


Hi guys, yeah, I was a bit surprised to read Steven's statement that none of the 3 mechanisms (start monitoring, profiling *OR* memory monitoring) were "intended for production use". That seemed quite an assertion! :-)

And of course, since he was with Adobe when CF8 (and 9?) came out, and certainly has direct connections to insiders, we are inclined to want to regard that you are speaking authoritatively, Steven. Are you sure that Adobe folks would say that (those are not intended for production)?

I'd think if they felt that, then we would have seen that addressed in the update. Instead, we got primarily the new internal web server, which will have its value I'm sure.

Something not mentioned by many is (for me) as important, and to the very point about these "Start" buttons. You can now turn them on/off (and see their status) from inside the CF Admin. That's huge.

But I agree on the ideas Steven has raised. I have some more and should blog them one day. Related to all this, I have recently started tweeting at @cf911, and I plan to build out a new resource at CF911.com. CF Server troubleshooting is my area of focus now, and Steven has always been a tremendous resource for those of us in that space!


Thanks for filling in the details Charlie. To restate the comment I made earlier, I was making a blanket statement when I said that none of the 3 are intended for production, and I did that because I often found people weren't able to remember which were ok for production and which was not, and many didn't know that memory tracking was bad for production.

I know that Adobe knows that memory tracking is a resource hog that will slow production. And I know that Adobe doesn't document that memory tracking shouldn't be used in production, and therefore I state what might be the converse of that, that Adobe doesn't document which should be used in production or which should not. I do use Profiling and Monitoring in production on some occasions in a sparingly manner, but never Memory Tracking.

I apologize for being unclear in the original post. Rather than do a strike through, I'll just defer to the comments here.


Sure, and to be clear, I was in agreement on memory tracking. I wasn't as clear about that in my own comment. That said, I'll say that I have worked with some folks who had it enabled and it really wasn't hurting.

My observation is that it just depends on how much stuff is in memory (as active objects), and more importantly, how complex they are. I can imagine that if there are complex nested objects (CFCs with structs, arrays, query objects as properties, etc.) then it could be expensive for CF to trace through those to find their size, etc. Some production apps just aren't that complex.

As is so often the case, I'd say "it depends". But still, I can understand leaning toward always discouraging it. And while I get your logic in just dismissing all three, I'm just not quite ready to do that.

Even so, we should point out as well that indeed even if one DOES disable all three buttons, there can still be value in the Server Monitor, as several of the pages don't require any of them to be enabled. Many miss that. (I blogged about this back in 2007 at http://www.carehart.org/blog/client/index.cfm/2007...)

One other follow up, about your hope for persistence of the monitoring data, I will note that the next release of FusionReactor (FR 4) will include a mechanism to extract Server Monitor data to save along with its own logs, and both those will then be importable into the new FusionAnalytics. More on these will be shared at CFUnited (and more on the latter at http://www.fusion-analytics.com/).


 

 

Calendar

 
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Search This Site

 
This is an exact search only

About This Site

 
Adobe Alumni & Community Professional. Expert in ColdFusion, Flex, LCDS, Photoshop, Lightroom. Linux RHCE. Follow Me!. For my photography check out Boston Portrait Photographer.
More about me

Recent Entries

 
ColdFusion 9.01 Server Monito..

Recent Comments

 
Posted By Swagat:
Ben Forta, best-selling ColdFusion author is coming to India this August at India's largest Adobe Flash Platform Conference. Ben Forta will conduct a ...

Posted By Steve:
The updated presentation I gave at CF.Objective() 2010 is available here: [link] At the end of the preso I gave a brief, pre-recorded demo of wri ...

Posted By Brad Munz:
I've come across a OOM problem in HotSpot which looks alot like this: java.lang.OutOfMemoryError: requested 4096000 bytes for GrET in /BUILD_AREA/jdk6 ...

recently played

 

no song is playing

now playing, a plug-in for itunes

Categories

 
RSS Adobe (34)
RSS Bicycling (9)
RSS Blogging (39)
RSS Books (13)
RSS Breeze (13)
RSS CFMX Podcasts (10)
RSS ColdFusion (429)
RSS Computer Technology (51)
RSS Events (26)
RSS Flex (20)
RSS Gadgets (10)
RSS HiTech Industry (16)
RSS Java (25)
RSS Learning (57)
RSS Linux (70)
RSS Mac OS X (22)
RSS Macromedia (27)
RSS Meetup (35)
RSS New England (62)
RSS Odds & Ends (25)
RSS Outdoors (32)
RSS Personal (29)
RSS Photos (111)
RSS Photoshop (29)
RSS Podcasts (18)
RSS Rants (19)
RSS Restaurants (8)
RSS Science (34)
RSS Spain (16)
RSS Travel (42)
RSS Twitter (10)
RSS Video (20)
RSS Webcam (3)
RSS Writing (10)

Blogs I Read

 
Terrence Ryan
Ben Forta
Ray Camden
Kinky Solutions
Dan Vega
Gary Gilbert
Simeon Bateman
Red Hat Blogs
O'Reilly Digital Media
O'Reilly Radar
John Nack
The Strobist
Scott Kelby
Matt Kloskowski
Joe McNally
Digital Photography School
Engadget
Science Blog

RSS

 


Add to Google
Add to My Yahoo!

Aggregated By

 


Aggregated by ColdFusionBlogger.org

Credits and Stuff

 
BlogCFC - Free ColdFusion Powered Blog Software
CJM Group - ColdFusion Website Hosting


 
 
blog | photos | flickr | referers | webcam | stats | about | contact
 
Copyright © 2010 Steven Erat. All rights reserved.
This is a personal weblog. The opinions expressed here represent my own and not those of my employer