阿里云金牌合作伙伴-授权证书 长期稳定·永久朋友 产品专家1对1服务
阿里云购买咨询热线:158-0160-3153 凯铧互联客服

热门文章

阿里云常见售后问题集锦

阿里云RDS for SQL Server阻塞问题处理方法

发布:凯铧互联小编

今天有朋友问凯铧互联小编阿里云RDS for SQL Server阻塞问题处理方法

问题场景:

客户购买了阿里云RDS但SQL Server阻塞

阿里云技术回复:
当应用程序频繁读写某个表或者资源时,很容易出现阻塞情况。当阻塞问题严重时,应用程序端的语句执行会变得缓慢。针对SQL Server阻塞问题,排查建议如下:
循环监控sys.sysprocesses,获取阻塞信息。blocked列的值为阻塞头session_id,waitresource为被阻塞的session等待的资源。
while 1=1
begin
select * from sys.sysprocesses where blocked<>0
waitfor delay '00:00:01' --循环间隔时间可以自定义
end

阿里云RDS for SQL Server阻塞问题处理方法
查询结果结果字段的解释,请参考sys.sysprocesses。
循环监控sys.dm_tran_locks,sys.dm_os_waiting_tasks等视图,可以得到阻塞图谱。Request_session_id是被阻塞的session_id,RequestingText是被阻塞的语句,blocking_session_id是阻塞头session_id,BlockingText是阻塞头语句。
while 1=1
Begin
SELECT
db.name DBName,
tl.request_session_id, --被阻塞session
wt.blocking_session_id, --阻塞头session
OBJECT_NAME(p.OBJECT_ID) BlockedObjectName,
tl.resource_type,
h1.TEXT AS RequestingText,
h2.TEXT AS BlockingText,
tl.request_mode
FROM sys.dm_tran_locks AS tl
INNER JOIN sys.databases db ON db.database_id = tl.resource_database_id
INNER JOIN sys.dm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address
INNER JOIN sys.partitions AS p ON p.hobt_id = tl.resource_associated_entity_id
INNER JOIN sys.dm_exec_connections ec1 ON ec1.session_id = tl.request_session_id
INNER JOIN sys.dm_exec_connections ec2 ON ec2.session_id = wt.blocking_session_id
CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1
CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2
waitfor delay '00:00:01' --循环间隔时间可以自定义
End

SQL Server阻塞

DBName:数据库名称。
request_session_id:当前请求的session ID,即被阻塞的session。
blocking_session_id:阻塞头session ID。
BlockedObjectName:被阻塞的session操作的对象。
resource_type:等待的资源类型。
RequestingText:当前session执行的语句,即被阻塞的语句。
BlockingText:阻塞头session执行的语句。
request_mode:当前session请求的锁模式。
调优建议:

关闭阻塞头连接,可以帮助快速解除阻塞。
查看是否有长时间未提交的事务,及时提交事务。
如果有S锁参与阻塞,并且应用允许脏读,可以使用with nolock这个查询hint,让select语句避免申请锁,从而避免阻塞,例如 select * from table with(nolock)。
检查应用程序逻辑,按顺序访问某个资源。


看完上述说明如果您还有疑问,或者是需要咨询阿里云产品相关折扣、优惠或者是技术问题,可以直接联系我方客服!

如果您的问题还未能解决,您可以联系阿里云代理商凯铧互联客服寻求帮助。阿里云代理商凯铧互联提供阿里云服务器/企业邮箱等产品的代购服务,同样的品质,更多贴心的服务,更实惠的价格。 阿里云代理商凯铧互联会为您提供一对一专业全面的技术服务,同时还能为您提供阿里云其他产品购买的专属折扣优惠。通过凯铧互联购买可以获得折上折优惠!若您需要帮助可以直接联系我方客服,阿里云代理商凯铧互联专业技术团队为您提供全面便捷专业的7x24技术服务。 电话专线:136-5130-9831,QQ:3398234753。

为什么选择我们:北京凯铧互联科技有限公司(简称凯铧互联)由多名前阿里云资深技术专家创立,核心员工来自阿里巴巴、腾讯等,作为阿里云,腾讯云百度云,金山云.华为云重要的合作伙伴,专注于为企业用户提供云计算及云计算的解决方案。总部设在北京,并在内蒙设有办事处。做为一家综合性方案商,凯铧互联向各行业用户提供基于云计算的各种解决方案。为用户获得优质服务的同时,秉承"专业规划、周到服务"的服务理念,根据用户的实际情况,充分考虑各种网络资源的特点及功效,为用户量身定做一套适合于其实际应用需求的网络应用方案。帮助用户利用互联网的力量展开新的营销方式,并大大缩短了项目实施周期,获得用户的一致好评。