暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

看病与故障处理

原创 薛晓刚 2023-06-08
302

    好几天没写了,主要是家里亲人住院。我们平时遇到故障马上处理,即使不上班,一个电话也要VPN上线。我理解医院也是我们这样的,实际上不完全一样。人送抢救室,就在抢救室。大医院的抢救室和急诊,可以说相当的惨不忍睹。就和电影电视剧中被轰炸过的差不多。

    如果非常危险要去重症监护,未必能去。医院资源也不是无限的,必须有空的地方才能进去。而且遇到双休日,还要等上班。这个和电视中演的不一样。如果等不到医生上班或者没有床位,那么只能等死。

    相比而言,做我们这行的没有这个讲究,就是生病了,公司一个电话说出问题了,也要VPN连上来。我第一次觉得不亚于救死扶伤的医生。区别在于医生说尽力了,那就没指望了。我们不能怪医生。    而我们的系统还有重启或者切换的可能(当然也可能重启切换做不了),这个时候会被指责。这几天唯品会就是例子。

    当然区别还有不少。比如医生根据设备检查出很多指标,一看指标就能知道大概生病的原因。我们通过数据库可观测性也看出很多指标。不过不同的是,不是所有数据库都提供这些指标,没有的就是不可见了。另外就是医院的设备是买来的,而不少公司自己没有,不买,非要自己做(即架构师都喜欢重复造轮子)。即使哪个医院的教授让他去做CT或者B超的设备基本上都是做不出来的。西医医生基本都是学化学的,而医疗器械基本都是物理的。而会要求我们去做,这个真的很难。现如今能检查数据库每个指标分析的透彻就不容易了。

   还有,医生发现了问题,就开药或者做手术。基本很少有质疑医生的。而我们发现CPU高、IO高、会话高,以及JVM的FULL GC和OOM等等基本都是SQL的问题造成的。但是当我们开出药方时候,阻力很大。有的说不好改,有的说代价大等等。就像说要打针,患者说怕疼。要验血说晕血。这就没法进行下去了。各种不配合怎么做?正常的思路是就是做CT和X光的放射性检查也要做。其实处理这类问题也就是两种思路:

   治标:缓解。只要不是锁,那么用加IO资源和CPU资源,以及增加内存缓解IO等等的方式都是能缓解的。就像发烧的先给你退烧,缺氧的吸氧,失血的输血。前几天帮一个医院系统看,他们系统可以调整内存参数缓解,但是不能彻底解决。很多系统都是停留在指标这个阶段了。

   治本:改SQL、改设计和改逻辑。这是最难的,前面做的一塌糊涂,业务不合理,需求不合理、设计不合理、实现不合理等等。最终还是要解决这些不合理以及不对的地方。就像发烧最终还是要消炎,失血的还是要靠自己愈合等等。

   很多公司给到DBA或者运维的要求比特警响应要求还高。特警是接报要去处理,但是我也听说有些企业要求的是在问题发生之前介入,就是说有人犯罪了,目前还没人报警,特警从监控中看到了,特警就要将其击毙。最好是有人有犯罪想法,但是他还没实施(上线)但是特警发现了。将其击毙。这里并不是说这些要求不对,也不是说这些做不到的。在真实的公安领域是做不到的。在有些领域还是有可能的。比如上飞机前每个人全身上下检查一下,这就最大限度保障了。但是的确效率不高,很麻烦。这也就是乘坐飞机的要更早的到机场的原因。那么现在很多谈敏捷开发,就是要省略这些步骤。那自然会带出一些问题。如果要做到上线前检查,那么就要问开发写的是不是全都被DBA检查了一次?如果是,那么有可能。如果DBA没权限、或者公司没有这个意识、再或者没人力资源,那么是很难做到的。

   一个人抽烟喝酒,自然伤肺伤胃。当然医生说让他改,他也未必去改。好在得病人最后得病了也不会责怪医生。他也说不出这种话:“医生我就要抽烟喝酒,你能不能从你的知识方面。研究出一种药或者设备,我控制不了自己继续抽烟喝酒,你还能保证我不得病”。也许有吧。听说有人能改基因,把每个基因都改的无敌了,可能就行。但是代价应该巨大。

  当然最后还是说身体要给力,比如物理机和虚拟机这就天生不一样。就像免疫力一样,同样的烂SQL在虚拟机上就奔溃了,在物理机上由于CPU数量是虚拟机的好几倍和内存可能是虚拟机几百倍,而且可能IO也有上千倍的提升。这些烂SQL上来以后基本都被硬件抵消了。所以出问题概率大大降低。其实物理机就是用免疫力在抗烂SQL的病毒。对于一体机来说,那就更加强大了。当然虚拟机下如果要用的好,那么就要细心呵护,毕竟温室花朵没那么强的免疫力。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论