我们的几个Web应用程序有一个间歇性的错误,都说同样的事情:
System.Data.SqlClient.SqlException:build立与SQL Server的连接时发生networking相关或实例特定的错误。 服务器未find或无法访问。 validation实例名称是否正确,并将SQL Serverconfiguration为允许远程连接。 (提供程序:命名pipe道提供程序,错误:40 – 无法打开连接到SQL Server)—> System.ComponentModel.Win32Exception:未findnetworkingpath
我们无法重现这个问题。 一切正常99%的时间。 我们每天看到这些错误2到3次。 发生的时间不一致。 我们在AWS中运行两个独立的服务器:一个SQL Server Standard 2016服务器和一个运行我们的.NET Web应用程序的独立服务器。 Web应用程序通过ADO.NET连接。
我们如何开始诊断这些错误?
我们可以打开日志吗? 我们应该先排除什么?
实际上,我们使用pymssql驱动程序,从Python应用程序中得到了类似的情况。 我们的具体信息是“意外的EOF”。 我们从来没有想过。 我们只是在客户端执行重试…
我们尝试了很多东西。 作为正常监视的事情,我们监视活动TCP连接的数量。 也许他们超过了SQL Server的最大值? 但一切都很好。
最后,我们运行一个tcpdump来捕获所有的stream量,所以我们可以在Wireshark中查看它。 将其设置为显示UTC时间,以便您可以匹配日志条目。 也许还logging该特定连接的返回TCP端口或其他可识别的信息。
我们发现服务器有时会在TDS预login消息之后立即发送FIN (完成)数据包。 没有很好的理由被发现。 连接的最大数目是远远达不到的。
我想你的情况我会: