最近在用SSIS导数据时遇到RESOURCE_SEMAPHORE等待,之后挂起。
源服务器4G内存,SQL Server 2005 sp3 企业版,8核
目标服务器10台,配置同上
现在要在10台服务器上执行SSIS来抽取源服务器数据,数据量小时未发现异常,抽的数据量大时,出现RESOURCE_SEMAPHORE等待,然后SSIS进程挂起,导数据停滞,经查msdn,如下:
RESOURCE_SEMAPHORE
当由于存在其他并发查询而无法立即批准查询内存请求时出现。等待时间较长或等待次数较多可能指示并发查询的数量过多或内存请求的数量过多。
如图ASYNC_NETWORK_IO可以等,但出现RESOURCE_SEMAPHORE后,ssis进程会一直停滞:
推断可能存在一个ssis多个cpu处理的情况,因为开始见到过cxpack等待类型,随即修改并发为1:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'show advanced options', 0;
GO
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'show advanced options', 0;
GO
修改之后,等待类型全为IO如下:
之后再用SSIS并行抽数据,再未出现过RESOURCE_SEMAPHORE等待类型,也未出现过停滞。
有类似经历的朋友可留言交流。
后续:
这个问题应该还是内存分配的问题,至于和cpu并发下,内存申请是否有所不同,暂无环境可试了。
作者:nzperfect
出处:http://www.cnblogs.com/nzperfect/
引用或者转载本BLOG的文章请注明原作者和出处,并保留原文章中的版权信息。