For starters, I’m no server guru. I know some things and can get ColdFusion [Adobe/Railo] setup w/ ease but will it be optimal? Nope. This was proven true with a recent launch. I went with a general setup of Apache 2 -> Tomcat [via AJP] w/ Railo.
Most of my problems came, unbeknownst to me, by way of Apache being outdated and using the prefork mpm [opens a whole new Apache to cover requests based on your settings] vs the worker mpm [threaded; opens new threads only, not entire Apaache instances]. 2.2.3 was installed which used an older AJP module and by default used prefork. Simply upgrading to 2.2.16 wasn’t the push of a button or clicking of a few keys because centOS [via Yum] only grabs specific versions; in this case, 2.2.3. With a botched launch and days of outages for the next week+, I spoke with our team about bringing Railo Consulting in to fix things up.
They initially triaged our current server providing us with a laundry list of potential problems, partially discussed above. We attempted some of those updates but it didn’t provide us w/ the performance or load handling we initially thought and continued to have outages. The community [via mailing lists] all pointed to “your code has issues” and, being objective, I took heed. After scouring the code, rewriting a ton of stuff, and doing some performance tests…the site failed again. It simply was not performing well regardless of what we did to the code. 4 small queries aren’t that hard to output and only so much optimizing can take place.
After too many frustrations we brought Railo back to the fold to make sure we started with a solid server in our new setup, Amazon EC2. They took off doing so, had us up and running on time and within budget, and we were able to spawn multiple servers w/ the new AMI. We still had other performance concerns and adjustments to make but with the new server our performance tests were much improved and w/ multiple servers behind a load balancer they were perfect!
Railo Consulting took us from spotty uptime to zero outages and a happy community.
Thank you Railo!
For the record, this was a CFWheels application and I found there is poor performance when using returnas=”objects” on Railo. It may be the same on Adobe CF but I have not tested. CFC generation shouldn’t be this bad on CF but it is and bit me really bad.
Also know it is easy to return structs or a query w/ CFWheels. It is a matter of simply changing your query calls and adjusting your view(s).