hystrix文档翻译之运维
hystrix不仅用作工程可靠性还可以用来运维。
这里将会分享一个拥有100+Hystrix命令,40+线程池,每天有100亿次线程请求,2000亿次信号量请求的系统是如何使用hystrix运维的。这里的截图和问题分析都是来自于netflix api系统的真实环境。
如何配置和调优依赖调用
通常部署和配置一个依赖调用,需要根据它在生成环境情况下不断调优期配置。实践过程如下:
1.使用默认1000ms的timeout时间,除非有必要修改它。
2.使用默认10个线程池,除非有必要修改它。
3.使用灰度发布,如果运行正常,继续发布。
4.在生产环境运行24小时。
5.观察监控和报警。
6.在运行24小时后,根据流量和延时计算最严格的熔断器配置
7.改变配置并且持续观察
8.如果系统性能发生改变,则继续调整配置。
下面的图表展示了如何选择线程池大小,队列大小,timeout时间。

对大多数的熔断器来说,应该设置timeout的值接近99.5%的系统请求延时,这样可以保证异常请求不会耗尽系统资源。也需要调整线程池和队列大小,避免资源被耗尽。
配置和调优依赖调用的原则:
- 根据实际的流量调整
- 根据监控不断调整设置
合理的抖动和失败
Hystrix使用毫秒级的粒度来测量和报告监控数据。在大型的集群中,超时、线程池拒绝、延时等问题在任何时刻都可能出现。
下面的图显示了netflix api 监控的命令报表。黄色的和紫色的数字分别代表243台机器10秒内超时和线程池拒绝的个数。

大多数的系统有很多的异常抖动,甚至会突破延时比率。 在Hystrix中,你能清晰的看到系统的表现。你会看到很多延时数据,是没有用Hystrix执行无法看到的。 有以下几类原因:
- 本机进行垃圾回收。
- 依赖服务进行垃圾回收。
- 网络问题。
- 不同请求的负载不同。
- 缓存失效。
- 突发的大量请求。
- 部署发布。
延时
如果发现有延时,并不需要马上更改配置。如果配置正确,Hystrix会正确执行降级。
在Netflix使用Hystrix初期,当系统出现延时或异常时,我们共同的反应是动态更改配置来提高线程池大小,timeout时间,来让他恢复工作。但这是错误的,如果你的系统配置是合理的,当出现timeout,拒绝,熔断时,首先应该解决问题的根本原因。
不要设置过大的配置,这样会导致资源被耗尽。
举一个例子,假设现在有一个100台机器组成的集群,每个机器设置10个并发连接。那么总的机器可以处理1000个并发链接。正常情况下一般有200~300个并发连接,现在因为系统延时的原因,连接数变成了1000个。如果我们把并发数调成每个机器20个,我们会发现并发数会上升到2000。这样只会使情况更加糟糕。这也是熔断器存在的一个原因,在系统性能变成时,减少系统的压力来给系统一段时间进行恢复。
举一个例子,有一个被依赖的服务出现了很高的延时并且引起了熔断,但整个系统只有这一个服务被熔断了,其他的服务依然可以正常运行。

总而言之,当服务被熔断、超时、线程池拒绝时,在Hystrix层面需要服务自己恢复到正常状态而不是更改Hystrix配置。Hystrix就是用来隔离延时的服务,让他们可以快速恢复的工具。
依赖的失败

上面的图表显示了有一个服务有20%的异常,有严重的影响,但还没有被熔断。但其他几个服务都没有受到影响。这个例子中我们会发现,这服务大部分是异常而非延迟,因为黄色的数字0代表延时,而红色的数字17729代表异常。
下面的一张表显示了有这种类型的异常的服务的趋势

依赖失败降级
下面的截图显示了一个因为异常而出现的熔断。有99.5的请求延迟了。依赖服务执行过程将导致线程池耗尽和timeout异常。但是整个系统只有一个服务出现了熔断,蓝色的数字表示熔断而拒绝的请求数,黄色的数字表示timeout的请求数。

因为熔断服务执行了降级操作,返回了降级结果,所以其他的服务都正常。
连级失败
下面的图表显示了因为一个服务的性能延时,导致了整个系统的性能延时。

下图解释了防止连级错误的方法:

如果所有的服务都变坏了,也可能是你的系统出现了问题,而不是依赖服务。

有一下两种出现系统异常的例子
系统性能出现问题,价值过高,cup使用率过高。
内存泄漏导致gc引发延时。
hystrix文档翻译之运维的更多相关文章
- (转)实验文档5:企业级kubernetes容器云自动化运维平台
部署对象式存储minio 运维主机HDSS7-200.host.com上: 准备docker镜像 镜像下载地址 复制 12345678910111213141516 [root@hdss7-200 ~ ...
- redis运维相关
一.redis都有哪些数据类型?分别在哪些场景下使用比较合适?二.redis双写不一致三.雪崩和穿透四.redis的过期策略,LRU五.redis是如何实现高性能高并发六.如何保证Redis的高并发和 ...
- hystrix文档翻译之Dashboard
Dashboard Hystrix Dashboard可以让你实时监控hystrix的metrics信息. 当netflix开始使用dashboard后,运维效率得到了极大的提升,并且极大降低了大多数 ...
- IT运维监控解决方案介绍
现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...
- 一切从“简”,解放IT运维人员
运维人的神技 运维既是个技术活儿也是个苦差事,而运维人员被期望有着无限的技能:主机.存储.网络.操作系统样样精通,而且还要会写SQL.shell.开发语言java..net.python等等,对业务更 ...
- 马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)
马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文 ...
- IIS日志-网站运维的好帮手
对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情. 有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的. 还有些时候,我们希望不断地优化网站,让网站更快速的 ...
- 做linux运维工程师,必须要掌握以下几个工具
linux系统如果是学习可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究 ...
- SQL Server 自动化运维系列
本系列为SQL SERVER自动化运维的一些操作技巧点,所有内容都是根据日常运维过程中最经常遇到的问题,并为此形成了一些自动化运维的方式,皆为原创.... 供部分DBA和开发人员浏览借鉴,所应用平台基 ...
随机推荐
- linux线程控制-2(线程控制函数)
记录肖堃老师讲解的linux线程 1. 创建线程 int pthread_create( (pthread_t *thread, pthread_attr_t *attr, void *(*start ...
- HYSBZ-1045 糖果传递
有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. 假设当所有人获得均等的糖果的时候: 每个人手上的糖果的数量为\(ave\) 第\(i\)个人初始时的 ...
- asyncio系列之Lock实现
import types import select import time import socket import functools import collections class Futur ...
- Java枚举简述
Java 枚举(enum) Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等. Java 枚举类使用 enum 关键 ...
- 如何发挥微博客在seo营销中的作用
http://www.wocaoseo.com/thread-158-1-1.html 我们知道,现在微博客已经发展的相当成熟,普通一个人,只要会上网,就能开通属于自己的博客,进而可以时时地通过微博客 ...
- python - Lambda函数 匿名函数
Lambda 匿名函数 python 使用 lambda 来创建匿名函数. lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda ...
- linux系统指法练习与打字游戏软件
以 fedora和ubuntu 系统为例,fedora/centos系统用yum install命令安装 ubuntu系统用apt-get instll命令安装 yum install ktouch$ ...
- HTTP系列:缓存
先看一些概念性的术语: 命中率:由缓存提供服务的请求所占的比例被称为缓存命中率: 缓存未命中:其实就是一些到达缓存的请求没有副本可用,而被转发给原始服务器: 再验证:原始服务器上内容可能会发生变化,缓 ...
- 【小白学PyTorch】4 构建模型三要素与权重初始化
文章目录: 目录 1 模型三要素 2 参数初始化 3 完整运行代码 4 尺寸计算与参数计算 1 模型三要素 三要素其实很简单 必须要继承nn.Module这个类,要让PyTorch知道这个类是一个Mo ...
- Android java程序员必备技能,集合与数组中遍历元素,增强for循环的使用详解及代码
Android java程序员必备技能,集合与数组中遍历元素, 增强for循环的使用详解及代码 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 For ...