Welcome!

You will be redirected in 30 seconds or close now.

ColdFusion Authors: Yakov Fain, Jeremy Geelan, Maureen O'Gara, Nancy Y. Nee, Tad Anderson

Related Topics: ColdFusion

ColdFusion: Article

ColdFusion Server Recovery

ColdFusion Server Recovery

Have you ever built that "killer" ColdFusion app only to have server problems bring your application to a grinding halt? Fortunately, armed with a little knowledge and a few batch files, most issues in ColdFusion 4.0-5.0 are easily resolvable in less than 60 seconds.

Many of these scripts are taken directly from the edgewebhosting.net internal support archives and have been created after many years of troubleshooting ColdFusion servers. The batch files in this article as well as several other scripts and utilities used for recovery can be downloaded at: http://edgewebhosting.net/quickfix.

Even if you don't have a dedicated server, you should still know how to perform basic ColdFusion server recovery procedures. You may need to recover an in-house server, or offer a little friendly advice to the support tech on the line who may not know how to resolve a problem with your shared hosting service.

This article assumes a Windows-based platform utilizing Microsoft IIS as the Web server, one of the most common environments for hosting ColdFusion Web sites.

Problem 1:
Applications are running very slowly, and opening Task Manager reveals cfserver.exe utilizing 90-100% CPU Utilization

  • Situation 1: The CFMAIL Bug
    The most common problem we have seen to date has been around since version 4.0 and exists through version 5.0. It's called "The CFMail Bug."
    Background: Every time a CFMail tag is called, a mail file with an extension of CFMAIL is saved into a folder on the CF Server's local drive c:\cfusion\mail\spool. If ColdFusion is unable to complete writing this file, it will generate a file less than 1Kb in size that either has no data or just empty spaces.

    At this point the dll used by the server to process and send mail, dart.dll, will lock up and go into an infinite loop. This causes the cfserver.exe (ColdFusion Application Server) to lock at 90-100% CPU utilization. Restarting the ColdFusion Application Server service or rebooting the computer seems to have no effect since the affected file remains in the mail spooler's folder.

    Solution:
    1) Open the Services dialog
    a. NT40 Control Panel -> Services or
    b. Windows 2000 -> Control Panel -> Administrative Tools -> Services
    2) Stop the ColdFusion Application Server Service
    3) Stop the ColdFusion Executive Service
    4) Open a DOS window and cd to your \cfusion\mail\spool folder
    5) Remove all of the files from this location (del *.*) or move them to a different folder for review later
    6) Restart the ColdFusion Application Server Service
    7) Restart the ColdFusion Executive Service
    8) Review the files in the temp folder you just created, removing any invalid files (these files may be opened with NotePad)

    You can also save and run the following batch file. Make sure to replace the path with the correct path to your CFusion folder on your server.

    REM Contents of fixmail.bat
    NET STOP "Cold Fusion Application Server"
    NET STOP "Cold Fusion Executive"
    CD \CFUSION\MAIL\SPOOL
    MKDIR TEMP
    MOVE *.* TEMP
    NET START "Cold Fusion Application Server"
    NET START "Cold Fusion Executive"

  • Situation 2: Variable Deadlocks
    Background: Variable deadlocks occur when several processes or users try to update the same memory in a Server, Application, or Session variable at the same time. On a site that receives a large amount of traffic, variable deadlocks on one site can cripple performance for the entire server. As I am sure you have read in several CFDJ articles, I cannot stress enough the importance of utilizing CFLOCK effectively within your applications. (For example, see "Super Wizards: Using ColdFusion for Data Manipulation and Processing," by Courtney E. Payne; CFDJ, Vol.4, issue 12.)

    Solution: If you suspect that you have variable deadlock conditions causing your server to go haywire, log in to your CF Administrator and enable "Full Checking" on the Server, Application, and Session scopes in the Locking section of the configuration. After you have made this change, ColdFusion will throw an error if you try to use a shared access variable without a lock. It's not perfect, but it will catch most missing locks.

    Another option is to simply use Studio's multiple file search for the strings "server", "session", and "application" and ensure that you are using CFLOCK with all of your shared variables. This may take a while, but consider it a painful reminder that you must lock your code. A quick browse of your Application.log (\cfusion\log\ application.log) will quickly reveal which CFM files and variables are causing the problem. You can then disable "Full Checking" and fix the code within the application causing the problem.

  • Situation 3: ColdFusion and Microsoft SQL Server installed on the same server
    Background: ColdFusion and MS SQL server are both very resource-intensive applications. In a high-traffic environment, both applications start to contend for the available resources on a server.

    Solution: If you can possibly avoid it, do not put ColdFusion and SQL server on the same machine if you intend to run in a mission-critical production environment. You will have a significantly more stable server if SQL is on a separate machine, even if that SQL machine maintains a higher CPU load than your CF Server. If this situation is unavoidable, modify the properties of your SQL server configuration to reduce the amount of available memory resource and CPU worker threads available to SQL Server in the Memory and CPU tabs within the SQL Server Properties in Enterprise Manager. Set the values to a necessary level for your application to avoid overloading your server. Usually 75% of the default values will produce effective results.

    Problem 2:
    The dreaded 500 IIS Internal Server Error

    Background: A 500 Internal Server Error is a generic error thrown by the server when it decides it cannot access an internal resource it thinks necessary to display your page. Although this is a much more common problem when developing applications using Active Server Pages, it does occur sporadically on all versions of ColdFusion Server. Although it is not specifically a ColdFusion problem, but an IIS problem, it still occurs often enough that CF developers should know how to solve it.

    Solution: The following steps should resolve the issue:
    1. Open Internet Services Manager
    a. NT40 Start->Programs->Windows NT 4.0 Option Pack->Internet Information Server -> Internet Services Manager or
    b. Windows 2000 -> Control Panel -> Administrative Tools -> Internet Services Manager
    2. Right click and open the Properties of the Web site with the problem
    3. Click on the Home Directory Tab
    4. Click the Unload Button

    If you are hosting in a shared environment, call your Web host and ask them to "Unload your site in IIS." They should be familiar with the process.

    Problem 3:
    ODBC Errors

    Background: There are several bugs in ODBC that can cause ColdFusion to stop processing one or all MS Access databases on your server. You may receive errors such as:

  • The Microsoft Jet database engine cannot open the file "(unknown)". It is already opened exclusively by another user, or you need permission to view its data.
  • Not enough space on temp drive
  • Memory allocation error

    Several other errors may occur while accessing your MDB file.

    Solution: Although this can be caused by several different conditions, most often all that is required is a restart of your ColdFusion Application Server service. If that does not alleviate the problem, most likely your MDB file is corrupt, the database requires a password, or the ColdFusion Server does not have the correct NTFS permissions to access the MDB file. If restarting the service does not resolve your issue, see http://edgewebhosting.net/quickfix/mdb for a set of utilities to repair MDB files or identify the presence of an MDB password.

    Please be aware that Macromedia and Microsoft do not recommend using Microsoft Access databases for production environments. We've found that once you start receiving more than 25 concurrent users to your Web application, this problem will reappear much more frequently.

    For more information, see Macromedia's notes on the subject: www.macromedia.com/v1/Handlers/index.cfm?ID=1540.

    Problem 4:
    Cannot access the system registry

    Background: Any time you attempt to access client variables, add a new data source, or configure just about any setting in the CF Administrator, you receive the error "Cannot access the system registry." As terrifying as this error may sound, it is easily resolvable in most cases.

    This problem occurs if your server is configured to store client variables in the system registry. By default, the variables are not purged for up to 90 days. On a server that receives moderate to heavy traffic, the registry can become full quite quickly. Once you have reached Windows' maximum allowable registry size, no applications on the server will be able to write additional data into the registry.

    Solution: The first step of this solution is to purge the client variables from the registry. This may be accomplished by downloading Macromedia's utility on their support site: www.macromedia.com/v1/handlers/index.cfm?ID=20340.

    Unfortunately, the Macromedia-provided utility may run for several hours to clear the entire client variables registry key. We have written an application to perform this process much more quickly:
    http://edgewebhosting.net/quickfix/registry.

    The second step is a little more difficult. It is highly recommended by Macromedia that you not store client variables in the registry in a production environment. Client variables should always be stored in a database when used in a production environment; preferably a SQL Server database. If this option is not available to you, use the Macromedia TechNote to update your registry to ensure that your variables expire in a timely fashion: www.macromedia.com/v1/Handlers/index.cfm?ID=22419

    Conclusion
    Although CF recovery techniques and problems can be significantly more complex than the most common problems listed in this article, you'll find that with the tricks included here and the utilities provided on our Web site, you should be able to quickly recover from the majority of server problems. ColdFusion has matured as a development environment. Since its inception, each new release has added a new level of stability. Part of building any stable application platform involves understanding the problems to which your environment is susceptible, as well as the recovery procedures, in case the worst happens. I hope this article will help bring a higher level of reliability to your applications.

  • Comments (0)

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    IoT & Smart Cities Stories
    Every organization is facing their own Digital Transformation as they attempt to stay ahead of the competition, or worse, just keep up. Each new opportunity, whether embracing machine learning, IoT, or a cloud migration, seems to bring new development, deployment, and management models. The results are more diverse and federated computing models than any time in our history.
    At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
    At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
    Dion Hinchcliffe is an internationally recognized digital expert, bestselling book author, frequent keynote speaker, analyst, futurist, and transformation expert based in Washington, DC. He is currently Chief Strategy Officer at the industry-leading digital strategy and online community solutions firm, 7Summits.
    Digital Transformation is much more than a buzzword. The radical shift to digital mechanisms for almost every process is evident across all industries and verticals. This is often especially true in financial services, where the legacy environment is many times unable to keep up with the rapidly shifting demands of the consumer. The constant pressure to provide complete, omnichannel delivery of customer-facing solutions to meet both regulatory and customer demands is putting enormous pressure on...
    IoT is rapidly becoming mainstream as more and more investments are made into the platforms and technology. As this movement continues to expand and gain momentum it creates a massive wall of noise that can be difficult to sift through. Unfortunately, this inevitably makes IoT less approachable for people to get started with and can hamper efforts to integrate this key technology into your own portfolio. There are so many connected products already in place today with many hundreds more on the h...
    The standardization of container runtimes and images has sparked the creation of an almost overwhelming number of new open source projects that build on and otherwise work with these specifications. Of course, there's Kubernetes, which orchestrates and manages collections of containers. It was one of the first and best-known examples of projects that make containers truly useful for production use. However, more recently, the container ecosystem has truly exploded. A service mesh like Istio addr...
    Digital Transformation: Preparing Cloud & IoT Security for the Age of Artificial Intelligence. As automation and artificial intelligence (AI) power solution development and delivery, many businesses need to build backend cloud capabilities. Well-poised organizations, marketing smart devices with AI and BlockChain capabilities prepare to refine compliance and regulatory capabilities in 2018. Volumes of health, financial, technical and privacy data, along with tightening compliance requirements by...
    Charles Araujo is an industry analyst, internationally recognized authority on the Digital Enterprise and author of The Quantum Age of IT: Why Everything You Know About IT is About to Change. As Principal Analyst with Intellyx, he writes, speaks and advises organizations on how to navigate through this time of disruption. He is also the founder of The Institute for Digital Transformation and a sought after keynote speaker. He has been a regular contributor to both InformationWeek and CIO Insight...
    Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life settlement products to hedge funds and investment banks. After, he co-founded a revenue cycle management company where he learned about Bitcoin and eventually Ethereal. Andrew's role at ConsenSys Enterprise is a mul...