asp.net – SQL Server预登录握手确认错误
参见英文答案 >
Connection to SQL Server Works Sometimes10个
我们有一个生产网站,混合了经典的ASP,inline .Net和编译的.Net,它与一个SQL Server实例进行通信,两者都是同一物理盒上的虚拟机,其中的一切都很好用.为了使用新功能进行一些测试,我创建了一个QA版本的站点,并将其设置为连接到另一个物理服务器上托管的VM上的数据库.它们是不同的网络(DMZ /内部),但是所有在千兆位的同一机架中,所以连接速度不应该是一个问题. 我们遇到的问题是QA版本会有一些工作,然后突然死亡,直到我重新启动应用程序池和网站.这不是一个负载问题,因为只是我和另外两个人测试这个过程,我已经确认了QA数据库所在的服务器没有资源问题(16GB RAM,使用3.2GB,处理器利用率在2%范围).具体错误(如下所示)发生在所有页面的变体 – 经典ASP,inline .Net和编译的.Net页面.基于我所做的所有研究,我不断指出它是一个防火墙问题,但是我们甚至打开了两台服务器之间的所有端口,它仍然发生.最奇怪的部分是当我们在ASA(5515-X)上启用跟踪时,几乎没有任何流量,有时网站会在其他时间立即踢回该错误,而其他时间需要30秒.有关页面没有进行任何强烈的查找(一页死亡共抓取了大约60条记录).这是完整的错误/堆栈跟踪: [Win32Exception (0x80004005): The wait operation timed out] [SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=21008; handshake=12; ] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Boolean breakConnection,Action`1 wrapCloseInAction) +6749670 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose) +815 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj,UInt32 error) +817 System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() +344 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() +48 System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt,Boolean trustServerCert,Boolean integratedSecurity,Boolean& marsCapable) +126 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo,SqlInternalConnectionTds connHandler,Boolean ignoreSniOpenTimeout,Int64 timerExpire,Boolean encrypt,Boolean withFailover) +693 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,String newPassword,SecureString newSecurePassword,TimeoutTimer timeout,Boolean withFailover) +219 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,Boolean redirectedUserInstance,SqlConnectionString connectionOptions,SqlCredential credential,TimeoutTimer timeout) +6777754 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout,Boolean redirectedUserInstance) +6778255 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity,Object providerInfo,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData) +878 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options,DbConnectionPoolKey poolKey,Object poolGroupProviderInfo,DbConnectionPool pool,DbConnection owningConnection,DbConnectionOptions userOptions) +1162 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool,DbConnection owningObject,DbConnectionOptions options,DbConnectionOptions userOptions) +72 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) +6781425 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionInternal oldConnection) +103 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionInternal& connection) +2105 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource`1 retry,DbConnectionInternal& connection) +116 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,DbConnectionInternal oldConnection,DbConnectionInternal& connection) +1089 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection,DbConnectionFactory connectionFactory,DbConnectionOptions userOptions) +6785863 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +233 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +278 System.Data.SqlClient.SqlConnection.Open() +239 System.Web.UI.Control.LoadRecursive() +71 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) +3178 我会显示一个代码块,但是由于所有的页面都开始死亡,一旦这样做不会做太多的事情.这一切在生产中都很好,所以唯一的区别是VM在不同的物理主机上,但鉴于这是所有新的硬件,没有理由这应该有问题. 我在这里也遇到过多个使用exec sp_updatestats和dbcc freeproccache的东西,但是这两个都不会有所改变. 我完全失去了任何建议? 解决方法
几个月前,我遇到了一个类似这个问题的问题.
对于我来说,在SQL Server配置管理器中为IPV4和IPV6启用TCP / IP解决了这个问题.即使没有安装IPV6,我也看到这种情况.奇怪的是,即使我只指定IPV4地址,甚至还经历过这种行为? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 关于管理配置文件中的连接字符串的建议
- asp.net-mvc – 如何在每个页面的第一次打击时提高ASP.Net
- ASP.NET (C#) 应用篇-数据列分页操作-01_Adapter_Fill
- asp.net-mvc – 如何在ApiController构造之后但在执行动作之
- asp.net – 首先使用数据库向aspnetusers添加列
- asp.net – 为什么Jet OLEDB驱动程序缓存我的MDB文件?
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- asp.net – 将数组传递给客户端进行显示
- C#_.NetFramework_WebAPI项目_EXCEL数据导出 C#
- asp.net-mvc-3 – SignalR依赖注入问题
- asp.net – 什么是aspnet_Users和aspnet_Members
- asp.net-mvc – 如何让Visual Studio在视图/页面
- asp.net – 如何判断Application_Error中是否有R
- Asp.net mvc 知多少(八)
- 部署DotNetNuke并将ASP.NET应用程序分开 – 可能
- asp.net-mvc – SOA vs MVC – 何时使用
- 实体框架 – 实体框架UnintentionalCodeFirstExc
- 每组ASP.Net中继器头(即月份)
- asp.net – IIS7,SSL和“由于请求实体太大,因此未
- asp.net-mvc-3 – ASP.NET MVC 3书籍计划