我们正在将一些网站迁移到运行Windows 2008虚拟机的云基础设施上。这些网站都运行在ColdFusion和MySQL数据库上。它们目前正在我们的CoLo中运行,没有任何问题。此外,它们在我们办公室的开发网络上运行,没有任何问题。
我们正在设置云,以尽可能与我们目前使用的配置相匹配,这实际上是,在一台服务器上使用CF10 + IIS,在另一台计算机上使用MySQL。我们已经完成了99%的工作,而且大多数事情都进行得很好。但是..。
我们遇到了一对夫妇,就像在两个地方一样,我们点击了一个链接/按钮,并受到了如下的欢迎:
执行数据库查询时出错。
通信链路故障从服务器成功接收到的最后一个数据包是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代码中找到导致脚本被调用两次的任何内容,因此我们猜测第一次调用在查询上失败,因此CF尝试again...only失败和错误。
在搜索这个问题时,我发现了很多关于改变MySQL超时的帖子。所有这些都没有奏效,我也没料到他们会这么做,因为我们正在处理的事情似乎不是一个超时问题。这些页面每次都会失败。
我们最接近的解决方案来自于这篇博文:http://www.talkingtree.com/blog/index.cfm/2011/1/12/Validation-Query-for-MySQL-communications-link-failure!
如果我们取消“维护跨客户端请求的连接”。设置为CFAdmin,那么错误就消失了。博客建议保留选中的选项,这是我们的首选,并使用"SELECT 1;“的连接验证。尝试that...same错误。
我们还尝试了JDBC AutoConnect=true选项。没有效果。
下载了最新的JDBC连接器,并使用它代替了标准的CF10-MySQL连接器。没有效果。
同样,99%的站点除了这两个链接外都可以工作,这两个链接在我们所有的其他环境中都工作得很好。还有其他想法吗?
发布于 2012-10-17 13:46:22
每次升级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-12-05 19:46:50
发现了问题。我们正在萨维斯的云基础设施上运行我们的网络。我们从Savvis使用的Windows服务器实例安装了Trend代理。这是一个入侵保护系统,这就是问题所在。禁用服务可以清除所有通信错误。我不知道它为什么拒绝了它先前接受的一些问题。我只是很高兴(终于)把这件事抛在脑后!
https://stackoverflow.com/questions/12827279
复制相似问题