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
<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
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. 设置连接超时、命令超时
.png)
3. 优化出错代码部分的程序逻辑,检查是否有数据库事务处理、多表更新等。
4. 记录出错日志,方便追溯、跟踪和调试。

参考文档:
The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener
达梦数据库DmException: 变量空间溢出 [sql]: INSERT INTO,Microsoft.EntityFrameworkCore.DbUpdateException|C/S开发框架
XtraReport 报错:Report scripts were found in the application while the script execution is disabled.
GoF设计模式:工厂模式(Factory Pattern)-C/S开发框架
GoF设计模式:中介者模式(Mediator Pattern)—协调多个对象之间的交互-C/S开发框架
GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架
GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架
GoF设计模式:迭代器模式(Iterator Pattern)—遍历聚合对象中的元素 -C/S开发框架
CSFramework.AutoUpgrader 发布命令升级包出错:InvalidOperationException使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型
How to changing the asp.net development server port?
打开设计窗体报错:To prevent possible data loss before loading the designer
Win10安装TortoiseGit 2.14,The error code is 2503 解决方案
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
FastReport.NET报错 System.PlatformNotSupportedException:“Operation is not supported on this platform.”
C# 对象克隆 TOut ObjectHelper.Clone |C/S开发框架
DbCommand生成器测试案例 | DbCommandGenerator.cs|C/S开发框架
The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener
达梦数据库DmException: 变量空间溢出 [sql]: INSERT INTO,Microsoft.EntityFrameworkCore.DbUpdateException|C/S开发框架
XtraReport 报错:Report scripts were found in the application while the script execution is disabled.
GoF设计模式:工厂模式(Factory Pattern)-C/S开发框架
GoF设计模式:中介者模式(Mediator Pattern)—协调多个对象之间的交互-C/S开发框架
GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架
GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架
GoF设计模式:迭代器模式(Iterator Pattern)—遍历聚合对象中的元素 -C/S开发框架
CSFramework.AutoUpgrader 发布命令升级包出错:InvalidOperationException使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型
How to changing the asp.net development server port?
打开设计窗体报错:To prevent possible data loss before loading the designer
Win10安装TortoiseGit 2.14,The error code is 2503 解决方案
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
FastReport.NET报错 System.PlatformNotSupportedException:“Operation is not supported on this platform.”
C# 对象克隆 TOut ObjectHelper.Clone |C/S开发框架
DbCommand生成器测试案例 | DbCommandGenerator.cs|C/S开发框架
其它资料:
什么是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内容管理系统 |
什么是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内容管理系统 |
在线客服
