故障自愈了解一下

序言

    一转身,一阵风,一个世界。。。。在你一转身的时候,是更加魅力,还是。。。


    我以为别人尊重我,是因为我很优秀,逐渐。。。慢慢的明白了,别人尊重我,是因为别人太过于优秀,太过于卓越


故障自愈

     越努力越孤单,好像这是一个宿命。。。


    追求卓越从而导致不合群,慢慢的孤独久了就习惯了。。。


    其实一个服务,一个进程,一个线程都是一样的,当一个服务能做到故障自愈,那么就会被人遗忘,一个自我能管理的服务是最好的,是最让人省心的。


    何为故障自愈:一个服务出现了问题,例如进程hang住,进程假死,那么监控程序发现服务出现问题,从而采取相应的措施,可能是重启进程,也可能是重新加载进程。。。那么问题来了,你如何判断这个服务除了问题,而定位到这个问题,这个则有变成了更加棘手的问题。


    一个服务出现问题,可能有千百种可能,而尽快恢复服务是最关键的,那么如何尽快的恢复服务,如果采取了这种故障自愈的机制会不会导致隐藏了一些问题的发现,从而导致一些BUG一直存在于系统中?


    用最简单的方式来演示故障自愈,以下是故障检测脚本:

640?wx_fmt=png

    以上是一段测试nginx的服务是否正常的脚本,主要就是通过发送http请求到nginx,如果nginx给与200响应码,那么就表示服务正常,如果不是。。。那么采取的动作就是重启nginx服务,记录的日志如下:

640?wx_fmt=png

    在上面的测试中,采用手动停止nginx进程来模拟测试,发现可以正常启动,从而达到服务可用的目的。


    在故障自愈中,主要有两个方面需要重点考虑:

    1、 如何判断服务出现了故障,在上面的例子中,主要是通过发送http请求来进行判断,可能会有误判么?如果此时nginx负载很重,来不及响应http的请求连接怎么办,请求连接超时怎么办?判断几次才算是服务不可用,3次?七次?判断的间隔时间是多久,3S?还是7S?

    2、 服务故障了,应该采取什么动作?重启服务?重启服务器?清除缓存?杀掉进程让supervisor服务自动拉起?


    其实,没有银弹。。。没有标准,例如判断请求的超时,多久才算超时,要根据你的业务量来计算,可能凌晨业务量很少,出现故障了,基本上是服务挂了;那么如果业务高峰,没来得及响应。。。那么整个中间不可用的时间是多少S?根据SLA来设定这个指标也是不错的。。。

鼓吹无运维

     鼓吹无运维来源于。。。devops,因为差不多所有的服务都可以做到故障自愈,所有的服务都无须运维干预,那么慢慢的就可以无运维了。


    在写程序的时候,你就考虑到了监控的指标项。。。。在程序上线的时候,你就考虑到了如何进行高可用。。。在程序上线的时候,就已经有了故障自愈,那么还要运维干啥。。。看日志?谁都会。。。。写程序的更加了解应用的架构。。。


    梦想是美好的,现实是骨干的,所以故障自愈也不是一步到位的。。。


    如果我发送的包你没有拒绝。。。但是也没有响应。。。我该采取什么动作???


    是否能做到故障自愈?是否在一转身的时间。。。变得更加完美


    self-healing。。。。so beautiful。。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值