asp.net – dbo.TempGetStateItemExclusive3重复调用
我正在调查一个使用SQL Server来管理会话的网站的问题.该网站是基于sitecore CMS的asp.net webforms.我们在各种环境中具有相同的代码,例如质量保证,分期和生产.
在生产中,我们正在看到的是,定期地,我们可以快速上升CPU使用率,并不会以任何方式与服务器通信.随着这个cpu的尖峰,我们看到了网络I / O的相应的尖峰. 我们的监控软件不区分流量到互联网和流量到DB服务器;然而,我们在数据库服务器上看到的数据是asp数据库中每秒数百次调用dbo.TempGetStateItemExclusive3,所有这些都是相同的会话ID,没有相应的页面请求数量进入Web服务器. 使用相同的代码和配置,我们根本看不到其他环境的这种行为.我们也看不到其他会话ID,只是这一个具体的一个. 从数据库中删除行简单地导致它被重新创建为具有相同的会话ID. UPDATE 我在事件日志中发现了这个错误: Violation of PRIMARY KEY constraint 'PK__ASPState__C9F49290145C0A3F'. Cannot insert duplicate key in object 'dbo.ASPStateTempSessions'. The duplicate key value is (sessionidwiththeproblem). The statement has been terminated. Stack trace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior,String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,Boolean returnStream,Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,String method,DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result,String methodName,Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Web.SessionState.SqlSessionStateStore.SqlExecuteNonQueryWithRetry(SqlCommand cmd,Boolean ignoreInsertPKException,String id) 任何人有什么想法如何尝试创建重复的会话ID? 解决方法
我们遇到类似的问题,具有以下配置:
> IIS 7.5 问题是有时一些会话仍被锁定到ASPState数据库中,每秒锁定会话的dbo.TempGetStateItemExclusive3每秒钟会产生数百个调用. IIS服务器上的CPU最终会随着锁定会话的次数而上升.临时解决方案是回收应用程序池. 进一步并启用IIS服务器上的跟踪,然后分析跟踪,我们注意到,只要EXECUTE_REQUEST_HANDLER模块出现问题(即导致500内部服务器错误的网络连接问题),则下一个模块为RELEASE_REQUEST_STATE (并且应该解锁会话)未被执行.因此,会议保持锁定. 它发现是IIS的一个错误,我们通过在web.config中将uploadReadAheadSize的值更改为0来修复它: <system.webServer> <serverRuntime uploadReadAheadSize="0" /> </system.webServer> UploadReadAheadSize属性建立Web服务器将读入缓冲区并传递给ISAPI扩展的字节数.每发生一次客户端请求. 也可以看看: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET Core 2.0仅在共享文件夹中查找视图
- asp.net – .net 4.6框架是在位升级,那么.net framework 4.
- 如何在ASP.NET C#中获取网页源代码?
- 如何重定向到returnUrl在Asp.Net MVC5中工作
- 在ASP.NET MVC中创建全局对象的最佳位置
- asp.net-mvc – 无法安装Asp.net MVC 3
- asp.net-mvc – Web API,OData,$inlinecount和测试
- .net – Umbraco Yay还是Nay?
- asp.net-mvc – ViewModel中的MVC3 RouteUrl
- ASP.NET 两个Repeater,实现合并单元格效果(HTML DEMO) 201