我们迁移了一个能够进行商业智能的应用程序,因此它可以pipe理大量的数据。 这个应用程序完全适用于我们自己的环境,但在AWS运行时,我们收到了很多“连接重置”问题。
我们已经确定,一个查询从具有XML内容列的表中检索数据。 该列是VARBINARY(MAX),内容大小差异很大。 如果我们不返回该栏,问题就会消失。 多调查一下,只有当这个列的内容接近或高于40kb时,才会有连接重置。
我们正在运行SQL Server 2012 Web Edition,并通过JDBC访问它。 如果我们通过SQL Server Management Studio连接,问题依然存在,所以它不是JDBC或我们的应用程序问题。
这个问题与另外一个问题非常相似,但是在我们的情况下,只有当列内容接近或高于40kb时,才能确定它是这样做的。
MS指定VARBINARY(最大)2GB的限制 ,所以它应该工作。
AWS有限制吗? 在我们的环境中,我们使用SQL Server 2012 Standard; 在AWS中是Web版,但是没有一个来源说明列的大小是有限制的。
更新:我们使用SQL Server Management Studio(以前是远程的)在同一台机器上运行查询,查询确实返回OK,即使有更大的结果! 所以问题是在AWS中运行。 进行访问的机器也在AWS中,但是是另一个机器。
更新2:简单的模拟查询:
SELECT CONVERT(VARBINARY(MAX),REPLICATE(CONVERT(VARCHAR(MAX),'A'), 500000))
有时候,较低的值为5000会导致问题,但会产生干扰。 通过通知500000你总是失去联系。 没有附加到SQL Server日志。
尝试调整您的窗口框的MTU:ping -f -l [试用MTU号码] [其他服务器IP]
这篇文章解释了如何使用这个技巧: 链接
希望这个帮助!