医疗机构常见「阻塞」的发现与治疗——3次鼠标查出源头

【应用阻塞】又称【性能-应用等待激增】,即通常所说的应用卡死,阻塞。 某医院【qj】系统经沟通为医院的【his系统】 通过此文章,点击3次鼠标即可查证问题源头。 1.问题发现-首先登录系统查看【问题溯源】 2.溯源明细—点击查看【阻塞链图】 下图为全景智能管理软件性能管理-问题溯源页面捕获的2021-10-17 10:12:07开始发生的堵塞事件信息,该堵塞持续了15分钟之久。阻塞源头为桑基图 点击查看锁头的区域,查看详情 点击【sql语句】查看详细sql语句 阻塞发生时正在执行的语句 被阻塞的语句之一 说明:阻塞会话SID965由WORKGROUP\2014ZMTYYSS主机的jlhis.exe程序发起。 锁头语句语句范围:“insert into bcqentry…..” 被锁语句“update ip_gen_preno set curr_no=curr_no+1 where flag=’T’” 在产生阻塞正在执行的语句执行前,该会话还执行了其他语句,其中有一条语句对ip_gen_preno表上产生的锁,而这条产生锁的语句并不是在执行结束后立即提交(commit),程序逻辑大概率是在(包含多条SQL的)整个会话事务结束时才提交,这就造成了锁存在的时间比较长,当有其他会话去访问该表时,就产生了锁等待事件,这是造成此次应用堵塞事件的根本原因。 3.解决治疗阶段 解决建议1:最简单的解决办法是在jlhis.exe 程序代码中找到该语句,只要业务逻辑允许,在该select语句执行前增加一个提交(commit)操作,即可有效解决问题。 解决建议2:如果业务逻辑不允许或者已经无法找开发商更改代码,检查抓取到的SELECT语句,是否索引缺失等问题导致SQL执行时间较长,可通过优化SELECT语句的执行时间,从而减少锁等待的时间,通常也可解决或缓解问题。 4、底层涉及的原理解析 引起此类问题多数因为以下情况导致: 1、执行sql时间很久不提交。 2、事务大,锁的面积的行数太多。 解决此类问题,核心就是减少执行sql时间语句,缩小锁的范围。也就是锁少点行,快执行。 查找该类问题的主要难点就是如何快速查找源头,做到有的放矢。 解决方式根据实际情况,或优化sql,或拆分事务,或找厂商换逻辑 等进行解决 了解更多:关注极简智能-全景Engine

提供全面的网站源码学习交流,小程序、APP、H5、支付、游戏、区块链、商城、直播、影音、小说、公众号等源码学习交流。
精品源码资源网 » 医疗机构常见「阻塞」的发现与治疗——3次鼠标查出源头
赞助VIP 享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡