现在我们正在处理我的公司环境中的一个难题,我们被指责为服务器崩溃,但我不能百分之百确定我们是罪魁祸首。这里是服务器环境:我们有一个主Coldfusion和它的MSSQL数据库。然后,我们还在另一个云上托管了一个辅助数据库(MySQL),用于各种任务。系统以这种方式构建的主要原因是因为主服务器是由我们的内容管理系统操作的,因此我们不允许修改它、添加表或任何类似的操作,因此我们使用备用数据库。根据设计,它上没有任务关键项,并且页面的构建方式是,如果备用DB没有返回任何行,页面将继续正确呈现。
基本上,我被告知,当备用MySQL服务器宕机或停止接受连接时,它将占用整个主云,包括托管在其上的其他5个站点。我没有访问主要Coldfusion或数据库日志的权限,因为CMS提供商不会将它们提供给我。因此,我只能根据他们给我的解释的有效性来判断。
我们的CMS提供者对此行为的解释是,当Coldfusion查询数据库时,它会创建一个线程,如果DB没有响应,线程将继续堆叠。最终处理器被封顶,服务器宕机。这是对Coldfusion运作方式的准确解释吗?如果是这样的话,有没有什么办法可以防止它,可能是通过更短的数据库超时等?或者,我们的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等)的内部进程超时。超时的唯一方法是手动设置timeout属性。不设置它可能会导致线程过载和服务器崩溃,就像我们发生的那样。
发布于 2010-06-18 03:02:20
http://kb2.adobe.com/cps/180/tn_18061.html
根据阅读要点3和你的流量,你的CMS可能是对的。
同样来自上面的链接:
如果数据库已关闭且无响应,ColdFusion服务器将尝试重新连接到数据库多少次?它最终会重新启动ColdFusion服务器吗?
当查询请求发生时,如果数据库关闭或到数据库的网络连接中断,连接将超时(您可以使用cfquery标签中的timeout属性自定义超时时间),并向用户返回错误。请注意,设置连接超时的能力取决于您使用的驱动程序。您可以捕获此错误,并使用trap /cfcatch标记以编程方式处理它。
这里的问题是cfquery标记上的超时变量与MySQL ODBC驱动程序不兼容。找不到默认超时。比方说5分钟。如果你在这5分钟内收到一个以上的请求,连接似乎会开始“堆积”。
https://stackoverflow.com/questions/3064583
复制相似问题