Resources for getting into the Multiserver (multiple instance) implementation of CF
Note: This blog post is from 2007. 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.You may have heard of the new Multiserver deployment option that was introduced in CFMX 6.1, also known as "multiple instances". It can bring tremendous performance and reliability improvements, allowing you to segregate apps on a single server either by function, or reliability, and so on. It can also help you manage memory more effectively.
Since many people may only be considering the feature now (either only now moving to 6.1 or 7, or 8), I want to share some resources if you're new to it. (The question came up on a list, and I offered the info there, so thought I'd pass it along here.)
First, there are a couple of articles from that time 6.1 frame:
"Introducing Multiple Server Instances in ColdFusion MX 6.1", by Tim Buntel
"Using Multiple Instances with ColdFusion MX Enterprise 6.1" video (sadly, seems no longer available)
Now, CF7 did introduce the new Instance Manager within the Admin, and that (and instances in general) is covered in the CF manual:
Configuring and Administering ColdFusion MX (Chapter 7, "Using Multiple Server Instances")
Finally, there is also a new Adobe article as of CF7:
Multiple Server Instances using ColdFusion MX 7 Enterprise Edition
(Update: There's also now a CF8 version of that: Multiple server instances using Adobe® ColdFusion® 8 Enterprise Edition. The technical content seems identical, but it appears to have had considerable editorial updating.)
There are certainly other articles folks have done in the CFDJ or at CommunityMX.com, but these should get you started.
Even though it's old news to some, it does seem that like many things, use of instances is something that may have been missed by folks. I've been contemplating a new user group presentation on the topic. Nothing new for CF8, but it seems people are considering things now that they may have ignored when 6, 6.1, or 7 came out (which is why I did my daylong class at CFUnited on what was new in 6 and 7 that folks may have missed).
One last point, if those don't make it: if you're running on Windows, don't try to create an instance with a JVM heap greater than about 1.3 GB. Though Windows should allow 2GB per app, this is just a number many found that beyond which CF won't start. Hope that all helps.
For more content like this from Charlie Arehart:
Need more help with problems?
- Signup to get his blog posts by email:
- Follow his blog RSS feed
- View the rest of his blog posts
- View his blog posts on the Adobe CF portal
- If you may prefer direct help, rather than digging around here/elsewhere or via comments, he can help via his online consulting services
- See that page for more on how he can help a) over the web, safely and securely, b) usually very quickly, c) teaching you along the way, and d) with satisfaction guaranteed
We've had good results running instances on JVMs with as 'low' as 512Mb allocated memory.
@Mike, your point about session replication is a good one. That's something that many are not aware of or struggle over. Again, there are resources discussing this for those willing to dig in. Or just hire Mike or other consultants out there like Universal Mind, Webapper, Fig Leaf, myself, and so on--why struggle for days when you can pay someone to just solve the problem for you in hours? :-)
@Ed, I just want to ask did you note that I made the same point about concern over too much memory on Windows? Since the article points out problems they had at 1.5GB, I want to reiterate that I pointed out 1.3 seems to be a magic number that many use. Of course, JVM memory management and configuration is a bit of a black art (more just something that takes time to learn to do well). And you certainly shouldn't use more than you need. If your setup is working well in as little as 512MB, more power to you, and certainly something folks should keep in mind.
Of course, so many things affect how well an app will run at such a setting. The best determination will come from lots of trial and error (or use of good monitoring, whether from JRun logs or JVM monitors or tools like SeeFusion and FusionReactor, or the new CF8 monitor.)