![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
稳定性保障
文章平均质量分 72
稳定性保障
zhifeng687
这个作者很懒,什么都没留下…
展开
-
线程池调优之动态参数配置
线程池配置参数corePoolSize:线程池核心线程数 maximumPoolSize:线程池最大线程数 keepAliveTime:允许线程空闲时间(对非核心工作线程的回收) TimeUnit:线程空闲时间单位 workQueue:线程队列(当核心线程数满了,新的任务就会放入这个队列中) threadFactory:线程工厂(用于创建工作线程,自定义线程工厂可以指定线程名称) handler:线程池拒绝策略(当线程队列满了且最大线程数也满了,就会执行任务拒绝策略,默认有4种) all转载 2016-06-02 22:35:31 · 2773 阅读 · 0 评论 -
日志打印规范
code为-500的日志要打印异常堆栈, 除此之外不能使用-500的错误码 参数校验错误, 需要给出具体的参数名. 使用MessageFormat实现参数精细化. aop切面的try catch异常捕获不能是catch exception, 而应该是catch throwable.防止出现栈溢出等Error 而无法捕获. 自定义业务异常BusinessException, 需要继承RuntimeException, 而不是继承Exception. 非预期异常需要接入告警. 禁止打印过长日志...原创 2017-01-23 04:14:32 · 241 阅读 · 0 评论 -
MQ消息堆积的解决和预防方案
MQ消息堆积的原因消息堆积即消息没及时被消费,是生产者生产消息速度快于消费者消费的速度导致的。 消费者消费慢可能是因为:本身逻辑耗费时间较长、阻塞了。预防方案增加消费者 关注单个消费者消费能力的上限,提升单个消费者的处理能力 mq的消息堆积的监控告警...原创 2017-01-19 13:03:16 · 2125 阅读 · 0 评论 -
慢sql熔断方案--饿了么数据库中间件DAL
代理层(DAL),最直观的需求是能做分库分表,能做读写分离,还可以做资源隔离、连接数隔离、连接的管理等,更重要的是还能对数据库进行相应的保护。外卖业务大多数人都是在中午下单,所以 11 点左右是饿了么的业务高峰。为了缓解数据库压力,我们会通过 DAL 层做削峰处理,当流量过大时我们会让用户消息做排队的处理,由此缓解对数据库的瞬间冲击。如果流量特别大的时候还可以做限流、熔断等处理。还有黑白名单机制,大家了解数据库运维的话会知道,如果研发写的 SQL 有问题,放入到数据库里风险会比较高。如果..转载 2022-04-20 20:10:27 · 911 阅读 · 0 评论 -
慢sql熔断方案--美团的数据库中间件DBProxy
概述首先介绍一下为什么要使用DBProxy:使用DBProxy之后,应用程序只需要在连接串中设置DBProxy的地址,不需要关注整个数据库集群的结点; DBProxy内部实现负载均衡,读写分离; Slave上下线的操作由DBA在自动化运营系统上点一下鼠标就能够完成。这样极大的减轻了DBA和应用开发人员的工作;而没有DBProxy的情况下,这些工作是由RD来实现的,引入DBProxy对于系统的可管理性和便利性都有非常大的帮助。DBProxy的主要功能介绍DBProxy的软件模...转载 2022-04-20 20:00:27 · 622 阅读 · 0 评论 -
limit深分页慢的原因以及解决方式
我们日常做分页需求时,一般会用limit实现,但是当偏移量特别大的时候,查询效率就变得低下。本文将分4个方案,讨论如何优化MySQL百万数据的深分页问题,并附上最近优化生产慢SQL的实战案例。limit深分页为什么会变慢?limit深分页为什么会变慢先看下表结构哈:CREATETABLEaccount(idint(11)NOTNULLAUTO_INCREMENTCOMMENT'主键Id',namevarchar(255)DEFAULTNULL...转载 2015-08-08 18:21:34 · 2932 阅读 · 0 评论 -
优化SQL的策略和慢查SQL的分析方法
一、背景随着业务不断迭代,系统中出现了较多的SQL慢查。慢查虽不致命,但会让商家感知到系统较慢,影响使用体验。在进行慢查优化过程中,我们积累了一些经验。本文将基于我们的实战经历,讲解工作中比较常见的慢查原因,以及如何去优化。本文讲解基于MySQL 5.7。二、慢查优化本节主要针对常见的慢查进行分类,讲解怎么去优化。2.1建立索引的正确姿势数据量较大的时候,如果没有索引,那么数据库只能全表一行一行的遍历判断数据,因此优化SQL的时候,第一步要做的就是确定有没有合适的可用的索引。在业务.转载 2017-06-14 17:45:26 · 1739 阅读 · 0 评论 -
处理redis热key的流程思维导图
LFU缓存机制LFU(Least Frequently Used)算法,即最少访问算法,根据访问缓存的历史频率来淘汰数据,核心思想是“如果数据在过去一段时间被访问的次数很少,那么将来被访问的概率也会很低。实现class LFUCache { // 缓存容量,时间戳 int capacity, time; Map<Integer, Node> key_table; TreeSet<Node> S; public LFUCa...原创 2022-04-10 00:59:22 · 2856 阅读 · 0 评论 -
从源码分析Hystrix工作机制
一、Hystrix解决了什么问题?在复杂的分布式应用中有着许多的依赖,各个依赖都有难免在某个时刻失败,如果应用不隔离各个依赖,降低外部的风险,那容易拖垮整个应用。举个电商场景中常见的例子,比如订单服务调用了库存服务、商品服务、积分服务、支付服务,系统均正常情况下,订单模块正常运行。但是当积分服务发生异常时且会阻塞30s时,订单服务就有有部分请求失败,且工作线程阻塞在调用积分服务上。流量高峰时,问题会更加严重,订单服务的所有请求都会阻塞在调用积分服务上,工作线程全部挂起,导致机器资源耗转载 2017-06-16 16:26:34 · 664 阅读 · 0 评论 -
限流之滑动窗口算法的实现
计数器滑动窗口的出现,就是为了解决计数器限流方式中在窗口切换时产生2倍于阈值的缺点。原理滑动窗口是在计数器限流的固定窗口的基础上,把固定窗口划分为多个小窗口,这些小窗口构成一个环,每个小窗口分别计数,而这些小窗口计数的总和不能超过中的限制,从而保证限流。同时当请求的时间大于当前窗口的最大值时,进行调整滑动窗口,把滑动窗口先后移动一个或多个小窗口(滑动多少取决于请求时间超过了多个少窗口时间),同时把滑动的窗口计数清空。从上图可以看到,划分小窗口数量越多,限流则越准确。由于小窗口计数转载 2017-05-04 15:26:21 · 1636 阅读 · 0 评论 -
限流的4种策略--固定窗口、滑动窗口、漏桶、令牌桶
01 Why分布式系统中,由于接口API无法控制上游调用方的行为,因此当瞬时请求量突增时,会导致服务器占用过多资源,发生响应速度降低、超时、乃至宕机,甚至引发雪崩造成整个系统不可用。限流,Rate Limiting,就是对API的请求量进行限制,对于超出限制部分的请求作出快速拒绝、快速失败、丢弃处理,以保证本服务以及下游资源系统的稳定。哪些原因会带来瞬时请求量突增?1,热点业务、突发热点数据带来的激增。例如微博热搜的爆点。2,上游系统的bug导致。3,恶意的攻击流量。实现限流的方法很多,..转载 2018-05-04 11:27:37 · 3209 阅读 · 0 评论 -
稳定性保障思维导图
系统风险点梳理数据库是否存在慢查询 数据库磁盘容量是否足够 数据库负载是否在高位缓存缓存命中率是否合理 是否存在缓存穿透问题 是否存在缓存击穿问题 缓存容量是否足够 缓存负载是否在高位服务是否接入熔断 是否接入限流 是否存在读,写请求放大问题 是否存在panic问题降级依赖的服务与接口,是否有容错降级处理 目前的降级设计是否合理热点针对热点问题的方案设计是否合理 是否对热点数据进行了压测压测接口压测预期值评估是否合理,是否考虑了活动的突发流量以..原创 2017-01-17 23:50:30 · 893 阅读 · 0 评论 -
服务端性能优化–最大QPS推算及验证
影响QPS(即吞吐量)的因素有哪些?每个开发都有自己看法,一直以为众说纷纭,例如:QPS受编程语言的影响。(PHP是最好的语言?) QPS主要受编程模型的影响,比如不是coroutine、是不是NIO、有没有阻塞? QPS主要由业务逻辑决定,业务逻辑越复杂,QPS越低。 QPS受数据结构和算法的影响。 QPS受线程数的影响。 QPS受系统瓶颈的影响。 QPS和RT关系非常紧密。 more…嗯,这些说法好像都对,但是好像又有点不对,好像总是不太完整,有没有一个系统点的说法能让人感觉一听就豁转载 2017-01-13 20:13:03 · 960 阅读 · 0 评论 -
性能优化公式与实践
前言“性能优化“相信是每个程序员都关心的问题,在实际工作中也常会对系统做优化。关于性能优化有两个问题很值得探讨:HOW:影响性能的因素很多,该从何入手?找到需要优化的点后,如何进行优化? WHY:优化后为什么能提升性能?为什么有些优化点更值得做?至于WHAT,我认为是不言而喻的,性能优化的终极目标只有两点:QPS和RT,可以说所有优化最终都是为了这两个指标。本文讨论的核心内容是几个与性能相关的公式,比如QPS公式、RT公式、线程数公式等。熟悉这几个公式能让我们抓住系统性能的底层逻辑,有助于在转载 2021-06-10 14:48:27 · 900 阅读 · 0 评论