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

Mysql 如果辅助数据库崩溃,它会使主coldfusion服务器崩溃吗?,mysql,coldfusion,Mysql,Coldfusion,现在,我们正在处理我的公司环境中的一个难题,我们被认为是服务器崩溃的罪魁祸首,但我不能100%确定我们是罪魁祸首。这是服务器环境:我们有一个主Coldfusion及其MSSQL数据库。然后,我们还有一个托管在不同云上的辅助数据库MySQL,用于执行各种任务。系统采用这种结构的主要原因是,主服务器由我们的内容管理系统操作,因此我们不允许对其进行修改、添加表或任何类似操作,因此我们使用备用数据库。根据设计,它上面没有任务关键项,并且页面的构建方式确保,如果备用数据库不返回任何行,页面将继续正确呈现

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

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

我们的CMS提供商对此行为的解释是,当Coldfusion查询数据库时,它会创建一个线程,如果DB没有响应,线程将继续堆栈。最终处理器被封顶,服务器停机。这是对Coldfusion如何运作的准确解释吗?如果是这样的话,是否有任何方法可以防止这种情况发生,比如缩短DB超时时间等等?或者,我们的CMS提出的整个解释只是一个转移视线的问题,而其他的东西才是导致崩溃的真正原因

任何指导都将不胜感激

已回答的问题-找到文件

全局设置超时请求不会使等待外部资源的内部进程超时cfquery/cfhttp等。超时的唯一方法是手动设置超时属性。如果不设置此选项,可能会导致线程过载和服务器崩溃,就像我们遇到的情况一样

通过阅读要点3,并根据您的流量,您的CMS人员可能是对的

也可以通过上面的链接:

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

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

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

通过阅读要点3,并根据您的流量,您的CMS人员可能是对的

也可以通过上面的链接:

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

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


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

嗯,好发现。你说与MySQL驱动程序不兼容是什么意思?在cfquery标记中是否忽略超时值?应用程序范围的超时值如何,或者限制同时请求。它的运行方式是堆栈还是队列?(满了就不收了,还是满了就掉最老的?考虑到所有这些,是否有任何方法可以防止这些崩溃?不兼容-根据他们的KB文章,这意味着不受支持。我认为这两个变量在服务器设置上的组合将有助于解决这个问题。Timeout min:ColdFusion MX在销毁未使用的连接之前保持该连接的分钟数。Interval min:服务器在c和c之间等待的时间(以分钟为单位)
循环检查过期的数据源连接以关闭。此外,您可以使用try/catch,但由于您不调用连接,因此请运行类似.NET/Java的SQL;我认为您的try/catch会在抛出异常之前等待服务器设置ODBC超时。但是,您应该能够为该数据库连接调用某种类型的关闭调用。很抱歉,我在执行CF时没有深入到这一步:/n但是,我刚刚找到了它声明的文档,因为ColdFusion只能超时处理发生在ColdFusion服务器内部的数据,超时请求设置不会超时主动运行数据库查询或任何其他外部调用,如cfhttp、cfftp、cfobject、cfx、,等等。这几乎说明应用程序范围的超时请求将无法工作,那么cfquery Timeout功能是否也会工作?此外,您在哪里看到MySQL cfquery timeout不受支持,我在上面的链接中找不到verbiage.Bullet point 2:timeout属性目前由SQL Server ODBC驱动程序以及DB2和Informix本机驱动程序支持。Oracle本机驱动程序、Sybase本机驱动程序、Oracle ODBC驱动程序和许多其他ODBC驱动程序不支持它。因为他们没有提到MySQL,所以我将使用它作为其他ODBC驱动程序之一。你说与MySQL驱动程序不兼容是什么意思?在cfquery标记中是否忽略超时值?应用程序范围的超时值如何,或者限制同时请求。它的运行方式是堆栈还是队列?(满了就不收了,还是满了就掉最老的?考虑到所有这些,是否有任何方法可以防止这些崩溃?不兼容-根据他们的KB文章,这意味着不受支持。我认为这两个变量在服务器设置上的组合将有助于解决这个问题。Timeout min:ColdFusion MX在销毁未使用的连接之前保持该连接的分钟数。Interval min:服务器在两个周期之间等待检查要关闭的过期数据源连接的时间(以分钟为单位)。此外,您可以使用try/catch,但由于您不调用连接,因此可以运行类似.NET/Java的SQL;我认为您的try/catch会在抛出异常之前等待服务器设置ODBC超时。但是,您应该能够为该数据库连接调用某种类型的关闭调用。很抱歉,我在执行CF时没有深入到这一步:/n但是,我刚刚找到了它声明的文档,因为ColdFusion只能超时处理发生在ColdFusion服务器内部的数据,超时请求设置不会超时主动运行数据库查询或任何其他外部调用,如cfhttp、cfftp、cfobject、cfx、,等等。这几乎说明应用程序范围的超时请求将无法工作,那么cfquery Timeout功能是否也会工作?此外,您在哪里看到MySQL cfquery timeout不受支持,我在上面的链接中找不到verbiage.Bullet point 2:timeout属性目前由SQL Server ODBC驱动程序以及DB2和Informix本机驱动程序支持。Oracle本机驱动程序、Sybase本机驱动程序、Oracle ODBC驱动程序和许多其他ODBC驱动程序不支持它。因为他们没有提到MySQL,所以我将使用它作为许多其他ODBC驱动程序之一。