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
    Whenever a new technology hits the high points of hype, everyone starts talking about it like it will solve all their business problems. Blockchain is one of those technologies. According to Gartner's latest report on the hype cycle of emerging technologies, blockchain has just passed the peak of their hype cycle curve. If you read the news articles about it, one would think it has taken over the technology world. No disruptive technology is without its challenges and potential impediments t...
    Nicolas Fierro is CEO of MIMIR Blockchain Solutions. He is a programmer, technologist, and operations dev who has worked with Ethereum and blockchain since 2014. His knowledge in blockchain dates to when he performed dev ops services to the Ethereum Foundation as one the privileged few developers to work with the original core team in Switzerland.
    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...
    René Bostic is the Technical VP of the IBM Cloud Unit in North America. Enjoying her career with IBM during the modern millennial technological era, she is an expert in cloud computing, DevOps and emerging cloud technologies such as Blockchain. Her strengths and core competencies include a proven record of accomplishments in consensus building at all levels to assess, plan, and implement enterprise and cloud computing solutions. René is a member of the Society of Women Engineers (SWE) and a m...
    If a machine can invent, does this mean the end of the patent system as we know it? The patent system, both in the US and Europe, allows companies to protect their inventions and helps foster innovation. However, Artificial Intelligence (AI) could be set to disrupt the patent system as we know it. This talk will examine how AI may change the patent landscape in the years to come. Furthermore, ways in which companies can best protect their AI related inventions will be examined from both a US and...
    In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...
    Bill Schmarzo, Tech Chair of "Big Data | Analytics" of upcoming CloudEXPO | DXWorldEXPO New York (November 12-13, 2018, New York City) today announced the outline and schedule of the track. "The track has been designed in experience/degree order," said Schmarzo. "So, that folks who attend the entire track can leave the conference with some of the skills necessary to get their work done when they get back to their offices. It actually ties back to some work that I'm doing at the University of San...
    When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...
    Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science," is responsible for setting the strategy and defining the Big Data service offerings and capabilities for EMC Global Services Big Data Practice. As the CTO for the Big Data Practice, he is responsible for working with organizations to help them identify where and how to start their big data journeys. He's written several white papers, is an avid blogge...
    Dynatrace is an application performance management software company with products for the information technology departments and digital business owners of medium and large businesses. Building the Future of Monitoring with Artificial Intelligence. Today we can collect lots and lots of performance data. We build beautiful dashboards and even have fancy query languages to access and transform the data. Still performance data is a secret language only a couple of people understand. The more busine...