6

我们正在将一些网站迁移到运行 Windows 2008 虚拟机的云基础架构上。这些网站都运行在带有 MySQL 数据库的 ColdFusion 上。它们目前在我们的 CoLo 中运行,没有任何问题。此外,它们在我们办公室的开发网络上运行,没有任何问题。

我们正在设置我们的云,以尽可能地匹配我们当前使用的配置,本质上,CF10 + IIS 在一台服务器上,MySQL 在另一台机器上。我们已经完成了 99%,大多数事情都运行良好。然而....

我们遇到了一对夫妇,如在 2 中,我们单击链接/按钮并受到欢迎的地方:

执行数据库查询时出错。

通信链路故障 从服务器成功接收到的最后一个数据包是 0 毫秒前。最后一个成功发送到服务器的数据包是 0 毫秒前。

扫描堆栈跟踪我还发现: Caused by: java.net.SocketException: Connection reset

通信链路错误总是:0ms。

最令人费解的是,似乎导致这种情况的查询是在所有站点上使用的简单查询,没有任何问题。为什么他们在这两个特定的地方都失败了,这让我们束手无策。

我们唯一的线索是,查看调用了哪些脚本的 CF 错误描述,我们可以看到查询失败的脚本被调用了两次?例如,我们的应用程序文件中出现了一种情况:

>The error occurred in D:/Our_Web_Sites/oursite/Application.cfm: line 73
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 73
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1

我们在 CF 代码中找不到任何会导致脚本被调用两次的东西,所以我们猜测第一次调用在 Query 上失败,所以 CF 再次尝试……只是失败和错误。

谷歌搜索这个问题我发现了很多关于更改 MySQL 超时的帖子。这些都不起作用,我没想到它们会起作用,因为我们正在处理的似乎不是超时问题。这些页面每次都失败。

我们最接近解决方案的方法来自此博客文章: http ://www.talkingtree.com/blog/index.cfm/2011/1/12/Validation-Query-for-MySQL-communications-link-failure !

如果我们取消选中 CFAdmin 中的“维护跨客户端请求的连接。”设置,那么错误就会消失。该博客建议将其选中,这是我们的偏好,并使用“SELECT 1;”的连接验证。试试……同样的错误。

我们还尝试了 JDBC AutoConnect=true 选项。没有效果。

下载最新的 JDBC 连接器并使用它代替标准的 CF10-MySQL 连接器。没有效果。

同样,除了这两个链接之外,99% 的网站都可以正常工作,这两个链接在我们所有其他环境中都可以正常工作。还有其他想法吗?

4

2 回答 2

0

发现问题。我们在 Savvis 的云基础架构上运行我们的网络。我们使用的 Savvis 的 Windows 服务器实例安装了 Trend Micro Deep Security Agent。这是一个入侵保护系统,这就是问题所在。禁用该服务清除了所有通信错误。我不知道为什么它拒绝了它之前刚刚接受的一些查询。我很高兴(最终)把它抛在脑后!

于 2012-12-05T19:46:50.553 回答
0

每次升级 CF 或 MySQL 时,我都觉得自己遇到了类似的问题。通常,更改 JDBC 驱动程序或连接字符串会有所帮助,我看到您已经尝试过了。

您是否检查过 MySQL 错误日志以获取任何提示?我们的位于 /var/lib/mysql 中(无论您的 'datadir' 变量设置为什么),并以 .err 扩展名结尾。

另外,也许为您的版本尝试其他一些 JDBC 连接字符串选项?我看到一些您可以启用的扩展日志记录。 http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

于 2012-10-17T13:46:22.050 回答