医院业务软件健康管理实战案例分享

Posted 极简智能

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了医院业务软件健康管理实战案例分享相关的知识,希望对你有一定的参考价值。

不当人工操作造成的锁等待事件

据数据显示:医院分钟级非空闲等待(锁等待)主因集中于两大领域,本次主要分享不当的人工操作。

1、不当的人工操作:开发人员操作、建索引、报表统计、备份系统……

2、程序质量不佳(代码、结构)造成的锁等待事件80%集中于长事务长事务造成、缺失索引造成……

(一)人工不当操作造成的阻塞事件特征

医院业务软件健康管理实战案例分享(一)_开发人员

  • 通常表现为由运维或开发人员操作开发\\运维管理工具引起
  • 报表统计---产生全表/全区扫描
  • 创建\\重构索引---锁表
  • 数据导入\\导出---锁表
  • 数据备份---锁表
  • 更易造成长时间的应用程序卡慢、乃至应用失效事件
  • 无法通过业务运行趋势进行早期预测

(二)使用全景软件发现并定位不当人工操作造成的阻塞问题

真实案例1

(1)问题发现:登录全景软件——问题溯源模块,发现2021-12-0817时左右,系统产生了持续40分钟左右的阻塞问题。

医院业务软件健康管理实战案例分享(一)_等待事件_02图1:问题溯源界面

问题溯源界面说明:问题溯源界面是全景软件根据内置触发算法生成的,用于记录突发问题及溯源信息的功能模块。不同颜色的方格表示不同问题种类,横纵坐标以小时/日期的方式展示了问题发生的时间,问题方格中的数字表示问题持续的分钟数(该小时内)。

医院业务软件健康管理实战案例分享(一)_sql_03图2 阻塞信息展示

(2)阻塞关系溯源:通过点击“阻塞链图”,展示阻塞与被阻塞的逻辑关系,发现是由PID为861的进程阻塞了PID为583的进程。

医院业务软件健康管理实战案例分享(一)_等待事件_04图3 阻塞逻辑关系图(桑基图)

(3)进程信息查看:通过进一步下钻发现,阻塞会话PID861由PlsqlDeveloper发起。这是开发人员使用的PL/SQL开发工具。相关人员在使用PL/SQL开发工具,执(begin语句是plsql工具会自动额外执行的语句)行SQL语句,其中有一条语句对z_lcfujian表上产生的锁,该锁会一直存在直到事务结束才会释放。这就造成了锁存在的时间比较长,当有其他会话去访问该表时,就产生了锁等待事件,这是造成此次应用堵塞事件的根本原因。

医院业务软件健康管理实战案例分享(一)_sql_05图4 进程详细信息

真实案例2

(1)问题发现:登录全景软件——问题溯源模块,发现2021-11-13 12时左右,系统产生了持续7分钟左右的阻塞问题。

医院业务软件健康管理实战案例分享(一)_sql_06图5 问题溯源界面

医院业务软件健康管理实战案例分享(一)_sql_07图6 阻塞信息展示

(2)阻塞关系溯源:通过点击“阻塞链图”,展示阻塞与被阻塞的逻辑关系,发现是由PID为997的进程阻塞了PID为1039、900、543、380、204、88、756的进程。

医院业务软件健康管理实战案例分享(一)_sql_08图7 阻塞逻辑关系图(桑基图)

(3)进程信息查看:通过进一步下钻发现,阻塞会话PID8997由Microsoft Windows Operating System发起。这是开发人员使用的SqlServer管理工具。相关人员在使用执行SQL语句,其中有一条语句对mz_patient_mi表上产生的锁,该锁会一直存在直到事务结束才会释放,这就造成了锁存在的时间比较长。当有其他会话去访问该表时,就产生了锁等待事件,这是造成此次应用堵塞事件的根本原因。

医院业务软件健康管理实战案例分享(一)_sql_09图8 进程详细信息

真实案例3

(1)问题发现:登录全景软件——问题溯源模块,发现2021-11-0312时左右,系统产生了持续37分钟左右的阻塞问题。

医院业务软件健康管理实战案例分享(一)_sql_10图9 问题溯源界面

医院业务软件健康管理实战案例分享(一)_开发人员_11图10 阻塞信息展示

(2)阻塞关系溯源:通过点击“阻塞链图”,展示阻塞与被阻塞的逻辑关系,发现是由PID为724的进程阻塞了PID为746的进程;PID763的进程阻塞了PID为802的进程。

医院业务软件健康管理实战案例分享(一)_sql_12图11 阻塞逻辑关系图(桑基图)

(3)进程信息查看:通过进一步下钻发现,阻塞会话PID724,763由Microsoft SQLServerManagement Studio发起的数据库备份任务,数据库在执行备份任务时,会对涉及到的表上锁,此时如果有涉及到相关表的业务执行时,会遇到阻塞。

医院业务软件健康管理实战案例分享(一)_sql_13

医院业务软件健康管理实战案例分享(一)_开发人员_14图12 进程详细信息

问题处置建议

对于此类不当人工操作造成的阻塞问题,通常有如下建议:

(1)通知相关程序使用者,结束该事务或由数据库管理员杀掉此进程,阻塞即可解除。

(2)尽量避免在业务时间段进行备份作业,最好将此类任务放在夜间非业务时间段执行。

(3)使用行政手段,加强管理。规范开发人员在核心系统上操作行为,如无必要开发人员不应在业务高峰期进行开展影响代码逻辑的操作,尤其是慎重在生产环境执行加锁的操作。类似的行为和操作在不久前曾造成郑大一附院系统停机两小时,800万经济损失,相关信息可参见媒体或百度搜索,因此,务必重视。

下期分享

医院业务软件健康管理实战案例分享(二)

---程序质量造成的锁等待事件

以上是关于医院业务软件健康管理实战案例分享的主要内容,如果未能解决你的问题,请参考以下文章

证券公司信息系统监控管理实战分享

Spring 事务快速入门详解

解决这3大问题,运维效率将超90%的医院

技术分享-企业分布式架构设计之分布式事务案例

汽车行业案例分享:海马汽车选择蓝云EasyTrack项目管理软件

Spring 事务快速入门详解