Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the s
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the s
引言 我们在操作数据过程中,特别是数据库比较大(数据库>1GB,单表记录达千万级)的情况下,偶尔会出现程序连接超时的错误,例如: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 下面总结一些经验仅供参考: 1. 检查Connection使用后是否关闭。Open->Executing->Close。 2. 如果将SQL语句复制到查询分析器中执行,如果执行时间本来就超过30秒,那么一般采用如下的解决方案: 首先分析引起Timeout的原因,一般是SqlCommand.CommandTimeout引起的, SqlCommand的此方法为获取或设置在终止执行命令的尝试并生成错误之前的等待时间,默认为 30 秒,你可以设置为0 ,它表示无限制,但是最好不要去设置0 ,否则会无限的等待下去的,只需要针对查询分析器的时间,去设置这个时间就可以了。 3. 检查程序逻辑是否有事务、多表更新,是否有并发操作、锁表等行为。通常事务锁会造成等待超时! 4. 执行时间不是很长,但是还是操作超时,有多种原因,一般经常出现的有两种,ASP.NET应用程序的请求超时,或者是连接池的连接生存期过时,因为连接池默认值是60秒,那么针对这两种解决方案为: 解决应用程序请求超时,在web.config中加上以下语句: XML Code: <system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720" /> </system.web> //来源:C/S框架网 | www.csframework.com | QQ:23404761 executionTimeout:是允许执行请求的最大时间限制,单位为秒 maxRequestLength:指示 ASP.Net 支持的最大文件上载大小。单位:KB 解决程序池生存周期问题,在SQL连接字符串中修改: Text Code: database=AA;uid=sa; pwd=sa; Pooling=true; MAX Pool Size=1024; Min Pool Size=1; Connection Lifetime=60 (单位:秒) //来源:C/S框架网 | www.csframework.com | QQ:23404761 关于连接池及Connection Lifetime参数: (1)每当一个连接使用完后释放回连接池,如果当前时间减去该连接建立的时间的值大于Connection Lifetime设定的值(秒),该连接被销毁。Connection Lifetime是用于集群数据库环境下。例如一个应用系统的中间层访问一个由3台服务器组成的集群数据库,该系统运行一段时间后发现数据库的负荷太大而需要增加第4台数据库服务器。如果不设置Connection Lifetime,你会发现新增加的服务器很久都得不到连接而原来3台服务器的负荷一点都没减少。这是因为中间层的连接一直都不会销毁而建立新的连接的可能性很小(除非出现增加服务器之后数据库的并发访问量超过增加前的并发最大值)。 注意:Connection Lifetime很容易让人产生误解。不要认为Connection Lifetime决定了一个连接的生存时间。因为只有连接被释放回连接池的时刻(Close连接之后)才会检查Connection Lifetime值是否达到而决定是否销毁连接,而连接在空闲或者正在使用的时候并不会检查Connection Lifetime。这意味着绝大多数情况下连接从建立到销毁经过的时间比Connection Lifetime大。另外,如果Min Pool Size为N (N > 0),那么连接池里有N个连接不受Connection Lifetime影响。这N个连接会一直在池里直到连接池被销毁。 (2)当发现某个连接对应的“物理连接”断开(这种连接称为“死连接”),例如数据库已经被shutdown、网络中断、SQL Server的连接进程被kill、Oracle的连接会话被kill,该连接被销毁。“死连接”出现后不是立刻被发现,直到该连接被占用来访问数据库的时候才会被发现。 注意:如果执行Open()方法时候Data Provider只需从连接池取出已有的连接,那么Open()并没有访问数据库,所以这时候“死连接”还不能被发现。 C/S开发框架解决方案参考: 1. 针对出错的数据更新数据库统计数据、更新索引 SQL Code: EXEC sp_updatestats; 2. 设置连接超时、命令超时 3. 优化出错代码部分的程序逻辑,检查是否有数据库事务处理、多表更新等。 4. 记录出错日志,方便追溯、跟踪和调试。 扫一扫加微信
参考文档:
Cannot resolve the collation conflict.无法解析等号两边的中文简体和中文繁体字符集 打开设计窗体报错:To prevent possible data loss before loading the designer The Database principal owns a schema in the database How to changing the asp.net development server port? SQL:Cannot resolve the collation conflict (字符集冲突) WCF App.Config 配置参数详解:OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout WCF 可靠性会话(reliableSession)中的inactivityTimeout和receiveTimeout 测试报告 WCF服务错误:System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时 使用WCF连接池有效解决访问IIS承载的WCF出现SendTimeOut连接超时或IIS死机的问题 the pre-login handshake. (provider: SSL Provider, error: 0 安装GIT msi 程序出现the error code is 2503解决方案 软件开发与设计 - BBS-电子布告栏系统-[博客空间]YetAnotherForum.Net 中文完美汉化增强版 软件开发与设计 - MIS-管理信息系统-[其他类别]TheBeerHouse微软经典asp.net [电子商务]新普服饰行业网上商店系统XpShop 7.0 RC2_xpshop_clothes_7.0_rc2-源码下载 [电子商务]新普商城XpShop 7.0 正式版_xpshop_clothes_7.0_rc2-源码下载
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |