ColdFusion 8.01 on Windows - should I go 64 bit?

I'm in the process of specifying a new web server, which will be running ColdFusion 8.01 Enterprise (as well as IIS etc.).

The server will be running ~6 active instances of ColdFusion - and will initially be configured with 4GB RAM - with the option of upgrading in the future as required.

We will be using Windows 2003 Enterprise as the operating system.

What will the benefits and downsides be of going for the x64 OS compared with the x32 OS, taking the following into consideration:

  • The system will only be used as web application server
  • The system will initially be set up with 4GB RAM - and will never have more than 8GB.
  • The high number of instances of CF mean that if we did set the JVM Heap size over the ~1200 MB x32 limit, then we'd run a distinct possibility of running out of memory. (The reason for having so many instances of CF is to enable separation of CF Mail queues - 2 of the instances don't get any front end traffic at all, and are just responsible for sending out large batches of email)

Any advice would be appreciated...

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
Nick Collins's Gravatar Have you ever heard of GoGrid? It uses virtualization (using Xen) to allow you to provision servers as you need them. You could actually have multiple CF servers clustered with hardware F5 load balancing between them for a pretty reasonable price. I think for a Win2k3 server w/ 1GB of RAM it runs about $100/month.
# Posted By Nick Collins | 15/06/08 13:56
marc's Gravatar subscribing b/c i'm curious what others will say to this.

I haven't shopped for servers lately: is there a significant difference in the hardware cost of 32 vs 64 bit?

one thing I'd think though would be that for your two mail spooling instances, you wouldn't need to set the memory that high, would you?
# Posted By marc | 15/06/08 13:57
John Whish's Gravatar 32Bit can only really truly deal with 4GB of memory, so 64Bit seems sensible (now that CF 8.01 enterprise runs on 64Bit of course!). I run 64bit Windows 2003 servers and don't have any issues (other than getting 32bit apps to run). The performance gain (to me) of 64bit is more noticeable with SQL server than CF.
I think the question should really be why should I stay with 32Bit? :)
I curious to know why you don't use a dedicated mailing list software (which can send customised email) to handle your emails as cfmail is quite slow and doesn't handle bounces etc.
# Posted By John Whish | 15/06/08 16:40
Adrian J. Moreno's Gravatar 64-bit is so much faster there's no reason to stay with 32-bit. The only real question is, "why should you stay with Windows and not move to 64-bit Linux?" :)
# Posted By Adrian J. Moreno | 15/06/08 16:59
Dan Lancelot's Gravatar @Nick: Never heard of it... just looked now - that kind of set-up looks like it would get very expensive with CF Enterprise very quickly... I also don't think it would be suitable for the existing applications we will be switching over there...

@Marc: No difference - I think I'd be right in saying all the current range of server CPU architectures are x64 based - and I think some of the latest desktop CPUs are as well now. Certainly the Xeon servers we'll be getting are 64 bit.
With regards to memory usage, the instances that are spooling mail, are also pulling out the email content from the db, and replacing place holder content with values from the db. We've found that looping and calling cffunctions which are sending mail is very memory intensive (certainly on CF7) - as Garbage Collection doesn't seem to run until the CFC itself is out of scope... We have restricted the number of iterations within a single instantiation of the mail sending CFC to ~ 2,000, as we were finding that memory usage increases very sharply at about 4,000 iterations - causing unhandleable out of memory errors... We therefore have the heap size for the mail sending instances set to 1,200Mb. The mail sending process is implemented with a queue - therefore single threaded within each instance (out of process)

@John: Thanks - that's good to know. I'd already decided to go 64 bit for the SQL Server - as I think its likely that we will be getting 8GB Ram in the future on that machine - and 64 bit seems to be very well supported and highly recommended for SQL Server 2005.
We don't use dedicated mailing list software, as CF is the dedicated mailing list software... This is for an open access email marketing application. Bounce back handling is not the responsibility of the application server - but rather of the mail server (unless you use something like the <CFSMTP /> tag that I believe is available within Railo...). Bounce back handling for these apps is implemented separately on a dedicated SMTP server - which is polled with a scheduled task to pick up the bounce backs. CFMAIL itself isn't that slow - our experience shows that the bottleneck in sending mail is not CF, but the mail servers being used for relaying.

@Adrian: Good question - this is something that I seriously considered. Discussing this at Scotch on the Rocks with a few people, it seemed like there are a number of advantages of using Linux over Windows. The reasons we are not at this stage are:
1. We are totally responsible for maintaining and administrating these servers ourselves - and on the team we have over 20 years combined experience with hosting on Windows, and <20 hours on Linux.
2. We have a large(ish) codebase built up over several years, and around 40 applications which we know run fine on windows - but are not confident will run on Linux - mainly due to case sensitivity issues.
3. We don't have time - we have reached capacity on an existing server, and need to move very quickly to get everything running on the new servers - moving to a new operating system is not something that I feel would be wise to rush.

@Everyone: Thanks for your comments - unless anyone comes up with any negative counterpoints, it seems like going for 64 bit is the best choice.
# Posted By Dan Lancelot | 15/06/08 23:10
John Whish's Gravatar @Dan, we have SQL 2005 running on x64 with no issues.
That's interesting about cfmail not being slow and I agree with you about bounce back handling is not the responsibility of the application server. I was thinking more about CF creating multiple custom emails and then sending them to a mail server. I had thought that having the mailserver generate the emails (CF creates one which the mailserver customises) would be quicker because the multiple emails are created and sent from one server. The mailserver can also handle bounces and remove them from the list. Thanks for the info, it's useful to read your experience :)
# Posted By John Whish | 16/06/08 10:57
Tom Chiverton's Gravatar @John: Yup, and generally this is a solved problem, with mailing list software like MailMan that are tried and tested (and written in a cross platform language, so even run on Windows)
# Posted By Tom Chiverton | 16/06/08 11:24
John Whish's Gravatar @Tom, that's how I run things on my servers, it's good to know it's a good solution! I'll have to check out Mailman. Thanks for the tip!
# Posted By John Whish | 16/06/08 11:32
Coldfusion Development's Gravatar I wouldn't go Linux cos I don't want to have to make sure I use proper casing on CFM file names.. onRequestEnd.cfm... Pah - Be like windows and don't give a hoot :-)
# Posted By Coldfusion Development | 03/09/08 23:48
BlogCFC was created by Raymond Camden. This blog is hosted by DotLance Ltd.