Asp.net SQL Server预登录握手确认错误

Asp.net SQL Server预登录握手确认错误,asp.net,sql-server,asp-classic,sql-server-2012,iis-8,Asp.net,Sql Server,Asp Classic,Sql Server 2012,Iis 8,我们有一个混合了经典ASP、内联.Net和编译.Net的生产网站,它与一个SQL Server实例进行对话,在这个实例中,两者都是位于同一物理框上的虚拟机,并且所有功能都非常好。为了使用新功能进行一些测试,我创建了该站点的QA版本,并将其设置为连接到另一台物理服务器上托管的VM上的数据库。它们是不同的网络(DMZ/内部),但都在同一个千兆机架上,因此连接速度不应该成为问题 我们遇到的问题是QA版本会工作一段时间,然后突然消失,直到我重新启动应用程序池和站点。这不是一个负载问题,因为只有我和另外两

我们有一个混合了经典ASP、内联.Net和编译.Net的生产网站,它与一个SQL Server实例进行对话,在这个实例中,两者都是位于同一物理框上的虚拟机,并且所有功能都非常好。为了使用新功能进行一些测试,我创建了该站点的QA版本,并将其设置为连接到另一台物理服务器上托管的VM上的数据库。它们是不同的网络(DMZ/内部),但都在同一个千兆机架上,因此连接速度不应该成为问题

我们遇到的问题是QA版本会工作一段时间,然后突然消失,直到我重新启动应用程序池和站点。这不是一个负载问题,因为只有我和另外两个人在测试这个过程,我已经确认QA数据库所在的服务器没有资源问题(16GB RAM,3.2GB正在使用,处理器利用率徘徊在2%的范围内)。特定错误(如下所示)发生在页面的所有变体中-经典ASP、内联.Net和编译的.Net页面。根据我所做的所有研究,我一直认为这是一个防火墙问题,但我们甚至打开了两台服务器之间的所有端口,这种情况仍然存在。最奇怪的是,当我们在ASA(5515-X)上启用跟踪时,它几乎看不到任何流量,有时站点会立即回退该错误,而有时则需要30秒以上的时间。有问题的页面也没有进行任何密集的查找(一个死掉的页面总共抓取了大约60条记录)。以下是完整的错误/堆栈跟踪:

[Win32Exception(0x80004005):等待操作超时]
[SqlException(0x80131904):连接超时已过期。尝试使用登录前握手确认时超时。这可能是因为登录前握手失败或服务器无法及时响应。尝试连接到此服务器时所用的持续时间为-[pre-login]初始化=21008;握手=12;]
System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常,布尔断开连接,操作'1 wrapCloseInAction)+6749670
System.Data.SqlClient.TdsParser.throweexception和warning(TdsParserStateObject stateObj,布尔调用方连接锁,布尔异步关闭)+815
System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj,UInt32错误)+817
System.Data.SqlClient.TdsParserStateObject.ReadsInSyncoverAsync()+344
System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()+48
System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(布尔加密、布尔信任服务器证书、布尔集成安全、布尔和Marscable)+126
System.Data.SqlClient.TdsParser.Connect(ServerInfo ServerInfo,sqlinternalconnectionds connHandler,Boolean ignoresnopentimeout,Int64 timerExpire,Boolean encrypt,Boolean trustServerCert,Boolean integratedSecurity,Boolean with failover)+693
System.Data.SqlClient.SqlInternalConnectionDS.AttemptOneLogin(ServerInfo ServerInfo、String newPassword、SecureString newSecurePassword、Boolean IgnoresInOpenTimeout、TimeoutTimer timeout、Boolean withFailover)+219
System.Data.SqlClient.SqlInternalConnectionDS.LoginOfAliver(ServerInfo服务器信息、字符串newPassword、SecureString newSecurePassword、布尔重定向声明、SqlConnectionString连接选项、SqlCredential凭证、超时时间)+6777754
System.Data.SqlClient.SqlInternalConnectionDS.OpenLoginList(超时超时、SqlConnectionString连接选项、SqlCredential凭证、字符串newPassword、SecureString newSecurePassword、布尔重定向EduceResInstance)+6778255
System.Data.SqlClient.SqlInternalConnectionDS..ctor(DbConnectionPoolIdentity、SqlConnectionString connectionOptions、SqlCredential凭证、对象提供信息、String newPassword、SecureString newSecurePassword、Boolean RedirectedUserConnectionInstance、SqlConnectionString userConnectionOptions、SessionData reconnectSessionData)+878
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项、DbConnectionPoolKey poolKey、Object poolGroupProviderInfo、DbConnectionPool池、DbConnectionOwningConnection、DbConnectionOptions用户选项)+1162
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池、DbConnectionOwningObject、DbConnectionOptions选项、DbConnectionPoolKey池键、DbConnectionOptions用户选项)+72
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection-owningObject、DbConnectionOptions-userOptions、DbConnectionInternal-oldConnection)+6781425
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject、DbConnectionOptions userOptions、DbConnectionInternal oldConnection)+103
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection-owningObject,UInt32-waitForMultipleObjectsTimeout,布尔allowCreate,布尔OnlyOnEckConnection,DbConnectionOptions-userOptions,DbConnectionInternal&connection)+2105
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject、TaskCompletionSource`1重试、DbConnectionOptions用户选项、DbConnectionInternal和connection)+116
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection、TaskCompletionSource`1重试、DbConnectionOptions用户选项、DbConnectionInternal oldConnection、DbConnectionInternal&connection)+1089
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnectionOuterConnection,DbConnectionFactory connectionFactory,TaskCompletionSource`1重试,DbConnectionOptions用户选项)+6785863
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1重试)+233
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1重试)+278
System.Data.SqlClient.SqlConnection.Open()+239
System.Web.UI.Control.Loa