Contents
Has your site or app ever crashed, sending the IT department into a collective meltdown?
Perhaps you’re running an e-commerce site whose customers can’t log in. Or a networking platform that’s suddenly off everyone’s network.
Downtime and site maintenance can be costly resource hogs that draw your IT team’s attention away from other vital work. It can also drive away users and customers, eating away at your company’s bottom line. Errors that lead to downed sites and maintenance aren’t practical, over the long or short term.
Look, awful goofs happen — but not as often with Adobe ColdFusion. Why? Because Adobe designed the programming language and development platform to be stable, efficient, and cost-effective.
Practically speaking, CF is a better class of development platform and programming language. Still, accidents happen. Let’s take a moment to discover why, how to fix them, and prevent them from recurring.
In this article, we’ll learn:
-
Why ColdFusion servers crash
-
How to prevent CF server crashes
-
ColdFusion Server Performance Optimization Best Practices
Keep both hands on the wheel and let’s go!
Why ColdFusion Servers Crash
The amalgam of errors and mistakes needed to crash a server can fill books. And while it may seem worthwhile to get into the granular detail, every company’s tech ecosystem has its own quirks and flaws.
But generally speaking, a ColdFusion server’s crash can be caused by a number of issues within your company’s tech environment. Any one of the following can have a flaw:
- CF server
- JVM
- SQL database
- Operating system
All of these can stem from deeper issues within your app’s infrastructure. The trick to a fast recovery is intuiting or deciphering which of the following is putting the kibosh on your app.
Lack of CPU optimization
This is often the most common source of a crash. Many developers and CIOs underestimate the resources and usage an app will require. I call it “The Humility Crash,” wherein a development team underestimates the usage their work will get.
This most often manifests itself in CPU spikes, which is most often a sign of lackluster testing and optimization.
It can also carry any one of the following symptoms:
- Error 503/Service unavailable errors
- Website crashes
- Memory errors (for example, OutOFMemory, Memory leaks)
- Processing of slow requests
You may also notice slow responses to database queries.
Too-frequent garbage collection
I’ve written extensively about garbage collection, and I still consider it a good ancillary barometer for how your ColdFusion work is coming along. The same goes for crashes.
An extra, unexpected load can trigger more garbage collections than expected, sucking away precious resources. This leads to crashes and frustrations.
Memory flaws
CPU issues (and crashes in general) create this domino effect, spreading the remnants of the crash throughout much of your system. It can torpedo your server’s garbage collection and then memory.
If you do experience a crash, it might be a good idea to check your logs for any mentions of “OutOfMemory”.
The upper limit presets for an app can be wildly off, limiting the amount of work that can be done. You may be dealing with a greater load than you expected.
Queries gumming up your database
We’ve explored the perils of poorly-structured queries, including the ever-present danger of Queries of Queries (they’re basically like sticking a loaded gun to the head of your ColdFusion app.)
One of these interactions with the database server may have caused the crash. Check your logs to show if any queries timeout.
This also helps point out slow queries which need your attention, and potential rewording.
Security scans
Some third-party security tools run regular scans, which can tax your system’s resources at regular intervals. Be sure to keep these to an understandable minimum.
How To Prevent Crashes
The best remedy for crashes is to never have them in the first place. Like all preventative medicine, this is infinitely easier said than done. Still, there are a few basic, easy-to-implement practices you can adopt today which will prevent crashes in the future.
Install patches and security updates
I can’t recall a client suffering from frequent crashes while using a new, modernized version of ColdFusion. There are several reasons. The sort of company culture that values keeping its development platform modernized usually has all of its proverbial ducks in a row when it comes to coding.
They also frequently update their software, including the latest security updates and patches which keep ColdFusion safe.
Adopting this mentality can keep your company out of the mess that comes with outdated software and glaring security holes.
Use built-in tools to help eliminate bad code
The error-related crashes your server experiences can often be blamed on inertia and a lack of vigilance. Thankfully, ColdFusion has a few built-in tools which help offer a “second opinion” on your code, spotting potential flaws that your staff might have missed.
- Intelligent Code Assist: This tool in ColdFusion Builder helps your developers write code that’s more stable and safer. Consider it an auto-complete function for developers, offering suggestions in a pop-up menu as you write.
- Run ColdFusion’s integrated debugger: This seems pretty straightforward, doesn’t it? Use this debugger in combination with ColdFusion’s Code Profiler to run fast tests of your code.
The code assist and debugger are part of a larger suite of monitoring tools built into ColdFusion that should be integrated into your workflow and kept at hand for any new code your team may produce.
Use CF’s Scalability to lower the odds of unexpected loads
ColdFusion is one of the most expandable development platforms around. Use this to your advantage by making sure your server is able to handle realistic spikes in demand based upon an estimated number of users. Anything over the estimated amount is practically guaranteed to crash your server.
Deploy third-party tools
A host of reputable companies create tools which can help diagnose and fix problems such as crashes. Some, such as FusionReactor, provide metrics and a “state of play” report for your app, which can draw a direct route to the causes of your problems.
ColdFusion Best Practices Keep Crashes Away
Perhaps the most important crash-related advice I can give: don’t let crashes happen in the first place!
A few preventative habits and best practices can lower the odds of a server crash, causing your entire app to meltdown.
This includes, first and foremost, deploying containerization tools whenever developing a new app or adding to an existing one. This means apps can grow organically and in tandem across several groups within the IT department, which won’t mess with your current configurations.
Modern testing and mocking tools like TestBox and MockBox help design and mold your apps into more-stable offerings.
- TestBox — focuses on Behavior Driven Development
- MockBox — another CFML-centric testing framework which lets you see how your app would behave “out in the wild.”
Security issues can be among the most costly. Thankfully, CF’s tools along with third-party tools by Pete Frietag can keep expensive breaches at bay.
Deploy these with some regularity and use them whenever you’re coding. They’ll end up being fantastic tools in your collective arsenal.
A crashed server can often feel like doom and gloom. But a quick rebound and then — critically — preventative work to ensure it never happens again are crucial to keeping your server, app, and company’s bottom line safe.
Michaela Light is the host of the CF Alive Podcast and has interviewed more than 100 ColdFusion experts. In each interview, she asks "What Would It Take to make CF more alive this year?" The answers still inspire her to continue to write and interview new speakers.
Michaela has been programming in ColdFusion for more than 20 years. She founded TeraTech in 1989. The company specializes in ColdFusion application development, security and optimization. She has also founded the CFUnited Conference and runs the annual State of the CF Union Survey.