Digital Edition

SYS-CON.TV
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.

  • In order to post a comment you need to be registered and logged in.

    Register | Sign-in

    Reader Feedback: Page 1 of 1



    ADS BY GOOGLE
    Subscribe to the World's Most Powerful Newsletters

    ADS BY GOOGLE

    The question before companies today is not whether to become intelligent, it’s a question of how and...
    While some developers care passionately about how data centers and clouds are architected, for most,...
    ChatOps is an emerging topic that has led to the wide availability of integrations between group cha...
    As DevOps methodologies expand their reach across the enterprise, organizations face the daunting ch...
    As Marc Andreessen says software is eating the world. Everything is rapidly moving toward being soft...
    You know you need the cloud, but you’re hesitant to simply dump everything at Amazon since you know ...
    Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every ...
    The cloud era has reached the stage where it is no longer a question of whether a company should mig...
    The need for greater agility and scalability necessitated the digital transformation in the form of ...
    In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, provided an over...
    Coca-Cola’s Google powered digital signage system lays the groundwork for a more valuable connection...
    In his session at 21st Cloud Expo, Raju Shreewastava, founder of Big Data Trunk, provided a fun and ...
    "Since we launched LinuxONE we learned a lot from our customers. More than anything what they respon...
    DevOps is under attack because developers don’t want to mess with infrastructure. They will happily ...
    "As we've gone out into the public cloud we've seen that over time we may have lost a few things - w...
    In his session at 21st Cloud Expo, Michael Burley, a Senior Business Development Executive in IT Ser...
    Sanjeev Sharma Joins June 5-7, 2018 @DevOpsSummit at @Cloud Expo New York Faculty. Sanjeev Sharma is...
    We are given a desktop platform with Java 8 or Java 9 installed and seek to find a way to deploy hig...
    "I focus on what we are calling CAST Highlight, which is our SaaS application portfolio analysis too...
    "Cloud4U builds software services that help people build DevOps platforms for cloud-based software a...