[Looking for Charlie's main web site?]

CF911: Lies, damned lies, and when memory problems not be at all what they seem, Part 1

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Following on my earlier entry, CF911: Lies, Damned Lies, and CF Request Timeouts...What You May Not Realize, another common source of confusion and misunderstanding for people is when they think their server is "running out of memory", when in fact the problem is often not at all what they think. In this entry, I want to apply the same "cranky" tone :-) and extended explanation to this equally controversial/confusing topic.

I hear people raise concerns with memory problems quite often, whether in my CF Server Troubleshooting practice, or just in my participating in many mailing lists. Indeed, addressing this issue more than a few times the past couple of weeks has motivated me to create this, which will be a series of blog entries.

The series parts are expected to be:

  • Step 1: Determine if indeed you are getting "outofmemory" errors (this entry)
  • Step 2: Realize that having high memory usage is not necessarily a problem (entry to come)
  • Step 3: Realize that OutOfMemory does not necessarily mean "out of heap" (entry to come)
  • Step 4: Diagnose why you really are running out of heap (if you are) (entry to come)
  • Step 5: Realize that CF is maybe suffering because you set the heap too large (entry to come)
  • Step 6: If CF is hanging up but NOT due to memory, what could it be? (entry to come)

Let's get started and see how far we get...

[....Continue Reading....]

CF911: Want to modify the CF Step Debugger's use of a random port?

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Here's a quick tip (and some elaboration): if you've noticed that the CF step debugger (in CF 8 or 9) causes CF to listen on a randomly changing port, you can change that behavior (assuming you have good reason to do so, such as perhaps some challenges with firewall configuration).

It's a simple JVM tweak to cause it to use a fixed port:

-DDEBUGGER_SERVER_PORT=portNumber

You can add this either in the "Java & JVM" page of the CF Admin (if in Standard or Enterprise Server), or on the java.args line in the jvm.config file (for any form of CF).

You do need to restart CF for this to take effect.

A few warnings are in order

[....Continue Reading....]

CF911: How to control the size of CF's -out.logs

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
As a CF user or administrator running CF 6-9 on Windows, have you ever wondered how to increase the size of the console logs (-out log files in the [cf]\runtime\logs directory, or [jrun]\logs in Multiserver)? This entry will tell you how. It's quite easy to do, but it's not done using usual log file size control settings in CF's Admin or XML files.

The quick answer is to use either of two approaches: either the jrunsvc.exe in CF's runtime\bin (or [jrun]\bin), or do a manual registry tweak, both of which I show below.

Update for CF10, forward: CF10 and above change to using a new set of xml entries in the neo-logging.xml file, called maxOutLogSize and maxOutFileBackup that should control this (and which should not to be confused with the long-existing maxFileSize and maxFileBackup, both of which correspond to the settings on the CF Admin logging Settings page.) That said, some users had found in the early updates of CF2016 that somehow the xml entries were NOT being honored. It's not clear from them if later updates did fix that problem. I've not heard it as a widely-reported one.

BTW, if you don't know what CF's -out*.log files are about (they're important!), they're technically holding the console output for CF, when it's started as a Windows service. This can be vital information that is NOT logged in the normal [cf]\logs directory or Admin Log Files display. (If you start CF from the command line, then the same info is written to the command line instead and not to the log file.)

(If you're on *nix, pretty much the same info appears instead in the [cf]/logs/cfserver.log. I know some people have wondered about controlling the size of that file. What I discuss here applies only to Windows.)

Background on the sizing of the -out*.log files

[....Continue Reading....]

Need to look at large files? Consider free Universal Viewer

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you have any reason to look at large files (especially log files) on Windows, don't use NotePad (it doesn't like large files)! Sure, you can perhaps use WordPad, or you may be using a favored editor like TextPad, UltraEdit, NotePad++, and so on. But those are editors: they generally presume you want to change the file.

If you just want to look at a file, there's a great free tool to do it: UniversalViewer.

It can open a 1GB file as fast as a 1kb file (because it only pulls in what it needs to show the screen full of text you're looking at.) And there are times when you may well need to look at some very large files, especially when troubleshooting CF servers, like I do.

And actually, as its name implies, UniversalViwer can view far more than just text files, including images and more.

I've just only ever used it for looking at log files, for which it excels (and yes, you can search within the file, set it to tail files, and more.)

I've been touting the tool for years in classes and presentations, and I was about to mention it in another blog entry, but then I realized I'd not blogged about it on its own. Rather than have the reference lost in another blog entry, here's its moment to shine!

And yes, I do realize there are several other tools that can do this. I list this one and several others in a category of my CF411 list: Generic File View/Log Analysis Tools. (Note that there are some nifty tools in that category there for looking specifically at CSV files, as well as other entire categories for specific kinds of logs, like CF logs, web server logs, windows event logs, etc.)

CF911: Lies, Damned Lies, and CF Request Timeouts...What You May Not Realize

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
How often have you seen (or seen others complain of getting) a CF page running longer than it's "supposed to" by a timeout you have set. Maybe you've set the CF Admin "request timeout" (first setting on first page of the Admin), or used the cfsetting requesttimeout tag or the timeout attribute on some specific tag if it's available, trying to get the request to "end" in 60 seconds, and yet you see a request running for 3 minutes, 3 hours, or 3 days! How can that happen?

Or same with if you've set the request to timeout using an alerting feature in a CF monitor like CF Enterprise server monitor, FusionReactor, or SeeFusion.

And perhaps you've seen this error from ColdFusion, in your logs or on-screen:

The request has exceeded the allowable time limit Tag: cfoutput

Do you know what this means? It's usually not what you think, and it may appear as I said 3 hours after a request was "supposed to timeout" in 60 seconds. I've even seen experienced CF developers who get thrown by this challenge. It's not new (and for those reading this even in the CF2016 era, it still happens). And it's not so much a "bug" (in either CF or the monitor tools) but just a situation that you need to understand, and there can be some ways to resolve things.

In this entry I'll try to help explain this surprisingly common problem and I hope to correct some equally common misconceptions. I'll even contend that the info in this error message is often useless and indeed misleading (and therefore the feature producing it ought not be relied upon completely, and should perhaps even be turned off for many). More important, again, there may be a way to "really" kill such a long-running request. Along the way, I'll share some things that I've not seen documented elsewhere.

I also share a solution that may work for query processing but it's NOT about a tag attribute but rather a CF Admin setting in the datasource "advanced settings" to set a "query timeout". This was added in CF 9, but many never noticed. If that's your problem and you want to skip to more on that here, feel free. but you may want to come back and read the rest as it is STILL not a perfect solution.

Strap on your seatbelts. We're going for a bit of a ride (if this situation was easy to understood in the length of a tweet, then perhaps everyone would already understand it and not find it challenging!) As always, I welcome feedback.

[....Continue Reading....]

How do I love FusionReactor? Let me count the ways (6 minute interview video)

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
The folks behind FusionReactor have started a YouTube video channel and they recently posted a 6-minute interview with me that we did at CFUnited. In it, they ask and I recount the reasons I appreciate and recommend it. Check out the video, embedded also below.

FusionReactor is one of the leading CF Server Monitor tools, which works not only with CF 6/7/8/9, either Standard or Enterprise, but it also works with Railo, Open BlueDragon, and even BlueDragon JX 7.1. In fact, it works with any J2EE/JEE server or servlet engine.

If you're running a site on any of those platforms and ever have problems of slowness, instability, or any other "curious" problems, or just need to better understand the nature of requests that CF is processing, and how well (or poorly) it's doing it, FusionReactor is a great tool, for the reasons I outline. It's like having x-rays into the app server.

I've written and spoken about the tool quite a bit, and have a FusionReactor blog category here with over a dozen entries here, as well.

Coming review of "ColdFusion 9 Developer Tutorial" book by John Farrar, and a free chapter for you

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Today the publisher of John Farrar's new book, ColdFusion 9 Developer Tutorial offered to send me a review copy. I appreciate and look forward to that, as I've heard good things about it.

I'll post a review in coming weeks after I've had a chance to take a look.

Free Preview Chapter on ORM

In the meantime, they have also offered for free one of the chapters in the book so you can get a taste of the book's approach.

It's chapter 4, ORM Database Interaction, and as you'll see John leads you gently through this important new feature of CF9. Assuming you have no prior experience with ORM, he works in 20 pages from introducing the concepts, to quickly configuring and coding, to working with relationships, and more. You'll see he uses lots of screenshots and example code.

One editorial/review comment: I did notice that the preview chapter lists a last section to be on "custom configuration", which isn't ever found in the chapter. I brought this to John's attention and he apologized that it slipped through.

Having contributed to several books myself*, I know that can happen and I don't regard it as a big deal. It doesn't take away at all from the rest of the book.

Looking forward to the rest of the book

As for that rest of the book, and why you may want to consider it, the introduction indicates it "will teach you the basics of ColdFusion programming, basic application architecture, object reuse, and ORM concepts before showing you a range of topics including AJAX library integration, RESTful Web Services, Unit Testing, building custom tags, and his hybrid example of tags and objects COOP" ... "with real-world examples of the hows and whys, to get more done faster with ColdFusion 9" ...[and] "also covers the new features of ColdFusion Builder and additional version 9 updates".

I'm sure it will benefit many, and I'll look into all that when I get the review copy, and I'll be back to pass along my observations.

*I'm sure the publishers of my own books would think it appropriate at this point to mention those other books, which are also out recently and updated for CF9. They are the ColdFusion 9 Web Application Construction Kit, Volume 1 (Getting Started), Volume 2, Application Development, and Volume 3, Advanced Application Development.

My CFBuilder Debugger chapter (for CF9 WACK Vol 2) is online

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Here's good news for folks seeking more documentation on how to configure, use, and troubleshoot the ColdFusion Builder debugger.

My chapter on the topic, in the newly released CF 9 Web Application Construction Kit, Volume 2 Application development is available free online. It's one of 3 chapters at the end of the book (out of 21 total) that were forced online due to pagecount restrictions.

While it's a bummer for those who buy the print book and may not notice these are missing (though it should be mentioned in the TOC), the good news is that it means anyone can read the chapter.

You'll find the 25-page chapter (chapter 45, "Using the Debugger") online in a PDF.

(Update: It was previously offered as one of 3 chapters available at Ben's site. The link I had long used, (forta.com/books/0321679199/CFWACK9-2-echapters.pdf) no longer works, so I created my own version of it for posterity.)

Finally, some may notice on the Amazon page offered above that only Ben Forta is listed as author for the book. Of course, there were multiple authors. Ben, Ray Camden, and I were contributors to all 3 volumes, while there were still other contributors for volumes 2 and 3. Ben says that this oversight will be addressed soon.

New for CF9 (and 9.0.1): a query timeout that may really work, with a caveat

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
This is a very interesting change in CF9 (and 9.0.1), which has slipped under the radar for the most part it seems.

Did you know there is now a setting in the DSN page of the CF Admin (for most of the Adobe-provided DB drivers) which allows you to set a maximum timeout for queries against that DSN?

It's a new feature enabled for the DataDirect drivers, as updated in CF 9. (You will not see it if you use an "other" datasource type, such as when using a downloaded JDBC driver that you implement on CF.)

The caveat? This timeout is ONLY settable there in the DSN definition, not in CFQUERY (or CFSTOREDPROC) itself, which is a shame. The existing TIMEOUT attribute for those (CF10 added it for CFSTOREDPROC) is not the same and generally does not work. Still, the value of this even at the DSN level is too important to ignore for some challenges. More on that (and some other thoughts) in a moment.

[....Continue Reading....]

Some more recent (and upcoming) "appearances" (podcasts, interviews, speaking)

Note: This blog post is from 2010. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
It always feels a little awkward pointing things like this out, but since some readers may want to know about them, I have recently been the subject of a few of what I'll call "appearances" (and I have a few more coming up):

  • I was a roundtable participant in last week's RiaPodcast episode 2.9 (you can listen there)
  • I was co-host on the CFHour() podcast, show #60 a couple of weeks ago (you can listen there)
  • I was invited (along with Michael Smith) to be interviewed by Judith Dinowitz of FusionAuthority on the recently announced fact that this would be the last year of CFUnited, which I've spoken at each year. (You can read the interview at the FA link offered.)
  • It was announced last week that I'll be hosting a BOF (birds of a feather) session at the CFUnited conference. The session will be "CF911: Server Troubleshooting". More details at the page above.
  • It was announced last week as well that I will be giving another session at CFUnited, this one being the Sponsor talk for Intergral (makers of FusionReactor, with whom I partner a lot). The topic is "Continuously Improve CF Code Quality, Server Availability & Application Stability". More details here.
  • Finally, more details about my Day 2 keynote at the conference were also announced a couple of weeks ago. The topic will be, "CFCommunity: You're Never Alone". More details at the link offered.

More Entries

Copyright ©2024 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the html in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting