When problems are not due to CF, but may be in the web server (and a hat-tip to IIS 7)
Note: This blog post is from 2011. 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.Sometimes, CF problems are not really CF problems. Here's a little vignette from a recent consulting engagement (where I provide fast, on-demand CF troubleshooting services).
The challenge
I had a customer contact me recently because their server was performing poorly. They were experiencing significant latency on many requests. They were inclined to think they needed to change something in their application or SQL (as most presume when things go amiss).I helped them determine ultimately that the problem was not CF at all, but instead something amiss in their web server, in this case Apache. (Before any Apache defenders come at me, please: I'm not "hatin' on Apache", just reporting what we observed. Do keep reading for more details.)
I asked if they'd considered at least trying IIS to confirm if it might work better for this challenge, but they preferred the file-based configurability of Apache. While I noted that IIS had gotten better in recent years in that regard, they preferred to bring in some experienced Apache guys to sort things out. (I don't claim any particular expertise with Apache, and I'm not at all averse to letting a customer know when they may need to have someone else help with certain problems.)
The customer's first attempt at resolution
Anyway, I'm glad it worked for your customers, but I can only imagine what kind of headaches IIS7 will bring down the road.
What I suggested was merely that they might *try* IIS 7 (they were of course already on Windows), just to see if THAT problem went away.
If it did, as in this case it did, are you saying that it would be unwise to go with that solution? that instead they should suffer as long as it takes to get to the bottom of whatever was amiss? They were in quite desperate shape to get the server responding for their important business functions.
As for why I wrote here, as I went on to add, if perhaps something could be determined to help those with this configuration, I'm happy to have it be shared here with everyone, and of course I'd get it back to the client.
Then again, Marlon, you conclude "I can only imagine what kind of headaches IIS7 will bring down the road." On what basis do you make that assertion? Are you writing that with knowledge of issues with II 7? Or just as an Apache fan who can't believe anyone would run on IIS? or perhaps also an *nix fan, who holds it against those who run CF on Windows? Just want to understand where you're coming from. Two paragraphs don't convey enough for us to appreciate the value of your contention. :-)
Of course, you have to be running Enterprise in order to run CF on any other servlet engine/JEE server. But it's an alternative worth keeping in mind, for someone in such a situation, to keep that in mind as an option. (And of course the next release of CF, Zeus, will do that for us, running as it will on Tomcat instead.)
Then again, you refer to running CF on *nix, and your happiness with that. Fair enough: this customer was on Windows, and I was just trying to offer them a simple idea to try. They ultimately did, and they were happy with it, and I wanted to share that. Getting them to switch to *nix wasn't likely going to be well-received. :-) That said, maybe you're just hinting that "if people would only stop running CF on Windows, they wouldn't have all these problems".
Going back to my comment above to Marlon, while many people do love and prefer running on *nix, just know that there are also many people (indeed, I'd say most) running CF very happily on Windows, in production, and yes even under high performance. I think many people don't realize that (or think it's possible). I work with about a hundred customer a year, and I see all sorts of configurations. Whatever the setup, I can nearly always leave them with a better-running system. The OS and web server choice rarely is the root cause of any problems. I'm serious.
One more thing, Simon: you say you "have seen this same result with CF7". What do you mean, though? running CF7 with Apache on Win2k8R2? Or do you just mean general slowness of applications? If so, I'll say again that there are often MANY other explanations for that, which should be explored before considering the web server/connector itself to be the cause. That's indeed what I do, all day each day, for my customers.
In 95% of my engagements, I can help find and resolve the specific things that are amiss, and it's nearly always some aspect of CF configuration, or some other aspect of configuration (database server, web server, etc.), or perhaps coding. In this case, there wasn't an obvious solution.
But I write here (both entries and such extended comments) as well as on mailing lists, forums, and twitter, all in the hope of advancing knowledge among CFers. What I hope to communicate is that people should use diagnostics to find, understand, and resolve problems. And when that doesn't work, as in this case, they should be prepared to try thinking "outside the box"--even if that may mean challenging long-held stereotypes. :-)
I have not returned to Apache with CF 8 or 9, but I am assuming your client is suing one of these so it appears that Adobe have never dealt with the issue.
Fair enough. So sure, perhaps there is some issue that Adobe could explore/address. I suppose they need more specific demonstrable test cases.
Until then, my point here was just to say, "hey, if/until that's solved, do consider that an alternative web server may work". IIS is the main alternative, which is the only reason I mentioned it. And since some have formed opinions over it over the years which may no longer be deserved, just as others have with CF, I wanted here to propose that idea and this customer's happiness with it.
As for your comment, and my wondering if it was purely pro-*nix, I may indeed have read more into what you were conveying, especially in light of Marlon's note, both of which I saw at the same time this morning. :-)
Even so, perhaps the info we've shared (in all the comments) will help some readers, so that makes the back and forth worthwhile. Cheers.
Just for grins, you could see how a simple reverse proxy setup w/Apache would work. It could tell you if it was the connector or not.
now, I guess you could take this all with a grain of salt since I haven't been deploying any windows servers as of late so things might have changed since then.
Next time though, suggest nginx! :)