如果辅助数据库崩溃,它会使主Coldfusion服务器崩溃吗?

时间:2010-06-17 18:44:44

标签: mysql coldfusion

现在我们正在处理我的企业环境中的一个难题,我们被指责服务器崩溃,但我不是100%肯定我们是罪魁祸首。这是服务器环境:我们有一个主Coldfusion及其MSSQL数据库。然后,我们还有一个托管在不同云上的辅助数据库(MySQL),用于其他任务。系统以这种方式构建的主要原因是因为主服务器由我们的内容管理系统操作,因此我们不允许修改它,添加表或任何类似的操作,因此我们使用备用数据库。根据设计,它上面没有任务关键项,并且页面的构建方式使得如果备用DB不返回任何行,页面将继续正确呈现。

基本上,我被告知,当备用MySQL服务器出现故障或停止接受连接时,它会使用整个主云,包括托管在其上的其他5个站点。我无法访问主Coldfusion或数据库日志,因为CMS提供商不会将它们提供给我。因此,我只能根据他们给我的解释的有效性来判断。

来自CMS提供程序的此行为的解释是,当Coldfusion查询数据库时,它会创建一个线程,如果数据库没有响应,则线程会继续堆栈。最终处理器被限制,服务器停机。这是Coldfusion如何运作的准确解释吗?如果是这样,无论如何都要阻止它,可能是因为DB超时时间更短等等?或者我们的CMS提出的整个解释是红鲱鱼还有其他东西真的导致了崩溃。

非常感谢任何指导。

回答问题 - 找到的文件 http://kb2.adobe.com/cps/180/tn_18061.html http://www.adobe.com/devnet/server_archive/articles/cf_timeouts_and_unresponsive_requests.html

全局设置超时请求不会使等待外部资源的内部进程超时(cfquery / cfhttp等)。将它们计时的唯一方法是手动设置超时属性。不设置这可能导致线程过载和崩溃的服务器,就像我们发生的那样。

1 个答案:

答案 0 :(得分:5)

http://kb2.adobe.com/cps/180/tn_18061.html

从阅读项目符号3开始,根据您的流量,您的CMS人员可能是对的。

同样来自上面的链接:

如果数据库已关闭且无响应,ColdFusion Server会尝试重新连接数据库多少次?它最终会重启ColdFusion服务器吗?

如果数据库关闭或发生查询请求时数据库的网络链接断开,连接将超时(您可以使用cfquery标记中的timeout属性自定义超时时间)并向用户返回错误。请注意,设置连接超时的能力取决于您使用的驱动程序。您可以捕获此错误并使用thecftry / cfcatch标记以编程方式处理它。

这里的问题是cfquery标签上的timeout变量与MySQL ODBC驱动程序不兼容。找不到默认超时。比方说5分钟吧。如果在这5分钟内收到多个请求,那么连接似乎会开始“堆积”。