前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >故障改进

故障改进

作者头像
只喝牛奶的杀手
发布2022-11-14 19:39:59
5820
发布2022-11-14 19:39:59
举报

当你解决故障的时候,一定要防止对方对问题提前下结论,如果对方局部的证明是能证明结论是正确的,那从全局来看呢?不要在二手信息上深入讨论,不要用二手信息作为重要依据。

最近排查一个奇怪的问题,第一个编程式事务开启不提交,不回滚;第二个声明式事务也提交不成,并且trx_mysql_thread_id一样。

根本原因在于这两次,getSqlSession的时候,获取的SqlSession一样。

第二次复用了第一次的SqlSession会话:autoCommit为false 所以第二次也是执行失败的。

为什么会复用?第一次SqlSessionHolder 里面hold住线程的SqlSession,没有remove。

SqlSession 线程安全为什么会出现复用了第一次会话?因为线程池里面的线程可以复用。

Spring事务和数据库事务啥关系,归根结底Spring事务会把事务翻译成数据库可执行的事务脚本,如:start,commit,rollback。

那从整体来看,需要怎么故障改进?

第一,优化故障获知和故障定位的时间。

从故障发生到我们知道的时间是否可以优化得更短?

定位故障的时间是否可以更短?

有哪些地方可以做到自动化?

第二,优化故障的处理方式。

故障处理时的判断和章法是否科学,是否正确?

故障处理时的信息是否全透明?

故障处理时人员是否安排得当?

第三,优化开发过程中的问题。

Code Review 和测试中的问题和优化点。

软件架构和设计是否可以更好?

对于技术欠债或是相关的隐患问题是否被记录下来,是否有风险计划?

第四,优化团队能力。

如何提高团队的技术能力?

如何让团队有严谨的工程意识?

做个简短的总结:循序渐进的让故障定位时间变短,持续改善,不要出现好像又是人品的问题,莫名的日了狗,不存在的,归根结底是自己的基础理论修养不够。关于严谨程度,是工程师很重要的品质。


希望你有自由讨论的习惯,有肯于他人调和的性格,有在真理面前,自甘让步的气量,有据理力争而不伤和气的胸襟。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档