精华内容
下载资源
问答
  • 系统稳定性

    千次阅读 2017-03-13 21:28:58
    系统稳定性稳定性衡量标准 系统的各项指标相对平稳,不会有很高的突刺。 响应时间 load GC等 IO 系统的错误可以及时发现 平时出现的小问题都能及时发现并及时修复,防止极少成多,集中爆发 依赖梳理 外部系统依赖...

    系统稳定性

    稳定性衡量标准

    • 系统的各项指标相对平稳,不会有很高的突刺。
      • 响应时间
      • load
      • GC等
      • IO
    • 系统的错误可以及时发现
      • 平时出现的小问题都能及时发现并及时修复,防止极少成多,集中爆发

    依赖梳理

    • 外部系统依赖图整理

      • 依赖哪些系统
      • 系统间的交互图
      • 系统稳定性=自身可用率 * 依赖系统1可用率 * 依赖系统2可用率 …. 依赖系统n可用率
    • 对各个依赖进行分析梳理:强弱依赖

      • 依赖的方式: http,tcp等
      • 超时时间: 设置合理的超时时间
      • 强依赖:
        • 失败率&平均响应时间报警配置
      • 弱依赖
        • 失败率&平均响应时间报警配置
        • 降级配置:把该功能关闭
    • 内部依赖
      • 减少循环依赖
      • 系统启动内存初始化依赖
      • 内部的各个调用层依赖梳理: service -> manager -> dao

    代码层次结构梳理

    • 各个主要部件调用都能有较好的抽象,方便统一监控和后续的替换
      • 外部缓存(memcache)
      • 数据库调用
      • 应用内部cache
      • 依赖系统调用
    • 每个请求都生成一串唯一识别码(放入threadlocal中),然后可以在各个适配层打印出调用的上下文
      • 可以方便统计到一个请求对外的调用次数
      • 可以设置开关,方便开启和关闭

    系统主要链路梳理

    • 系统主要逻辑梳理
      • 数据接口
      • 页面
      • 定时任务
    • 然后统计这些业务的调用链路,看能否有优化的空间
      • 会调用几次外部系统请求(数据库,缓存,外部系统等)
    • 核心接口业务配置失败率、响应时间等相关报表和报警

    合理的日志,方便后续线上排查

    • 主要节点地方都需要追加日志,方便后续分析
    • 合理的设置日志级别
    • 设置后门可以动态调节日志级别
    • 可以局部打开日志: 例如特定用户才可以看到等等

    系统的GC分析

    • 分析young gc, full gc的频率
    • 可以分析单词请求大概使用的内存量,并针对性进行优化

    报警机制

    • 增加一些监控报警,可以及时收到相关错误信息
      • 外部依赖报警:失败率高,响应时间长等
      • 主要接口报警:主要接口的响应事情,失败率
      • 定时任务报警:执行失败等
      • 特定关键字报警:例如Exception, 特定的业务打印的严重错误等

    合理的容量预估

    • 单台服务器的qps,总的服务器的总qps

      • 注意有时候 系统总处理能力 != 单台服务器处理能力 * 服务器台数
      • 需要梳理系统的外部依赖,看外部依赖能否抗住
        • 数据库,缓存,外部系统等
    • 分析系统qps的波峰波谷

    • 最好能提前知道系统的流量激增的场景。 例如业务推广等。合理估算外部新增流量

    限流

    • 当流量过大的时候,可以开启并发线程数限制,保证部分请求可用.
    展开全文
  • 系统稳定性分析

    万次阅读 2018-06-14 12:51:46
    已知系统: 请判断其稳定性。 思路:判断系统的稳定性,只要求出系统的闭环极点即可,而系统的...同时采用阶跃响应曲线可以验证系统稳定性。 以下为基于Simulink采用阶跃响应曲线验证并观察系统稳定性。 Sim...

    已知系统:

    请判断其稳定性。

    思路:判断系统的稳定性,只要求出系统的闭环极点即可,而系统的闭环极点就是闭环传递函数的分母多项式的根,可以利用MATLAB中的tf2zp函数求出系统的零极点,或者利用root函数求分母多项式的根来确定系统的闭环极点,从而判断系统的稳定性。同时采用阶跃响应曲线可以验证系统稳定性。

    以下为基于Simulink采用阶跃响应曲线验证并观察系统稳定性。

     

    Simulink建模如下:

    结果如下:

    以下为基于MATLAB编程(改变系统增益K的值,观察并分析K值得改变对于系统稳定性的影响)绘制系统零极点分布图分析系统稳定性:

    clc;clear;close all;
    i = 1;
    z = -2.5;
    p = [0 -0.5 -0.7 -3];
    for k = [0.2 0.5 2 5]
        G = zpk(z,p,k);
        H = zpk(0,0,1);
        Cloop = feedback(G,H);
        subplot(4,2,i),step(Cloop);
        title(sprintf('增益为%2.1f时系阶跃响应图',k));
        subplot(4,2,i+1),pzmap(Cloop);
       title(sprintf('增益为%2.1f时系统零极点图',k));
       i = i + 2;
    end
    set(gcf,'color','w');
    

    结果如下:

     

    展开全文
  • 系统响应及系统稳定性

    千次阅读 多人点赞 2018-11-22 16:50:03
    实验一:系统响应及系统稳定性 一、实验目的 1、 掌握求系统响应的方法; 2、 掌握时域离散系统的时域特性; 3、 分析、观察及检验系统的稳定性。 二、实验原理及方法 1、 递推法求解差分方程的解; 2、 yn=filter(B...

    实验一:系统响应及系统稳定性

    一、实验目的

    1、 掌握求系统响应的方法;

    2、 掌握时域离散系统的时域特性;

    3、 分析、观察及检验系统的稳定性。

    二、实验原理及方法

    1、 递推法求解差分方程的解;

    2、 yn=filter(B,A,xn)函数,用于求解差分方程,B表示y(n)系数,A表示x(n)系数,xn表示输入函数,本函数用于求零状态响应;

    3、 yn=conv(x1n,x2n)函数,用于求x1n和x2n的卷积和;

    4、 MATLAB中检测系统稳定性的可行方法是:在系统的输入端加入单位阶跃序列,如果系统的输出趋于一个常数(包括零),就可以断定系统是稳定的。

    三、实验题目

    1、 给定一个低通滤波器的差分方程为

      y(n)=0.05x(n)+0.05x(n-1)+0.9y(n-1)
    

    输入信号

     x1(n)=R8(n),  x2(n)=u(n)
    

    a.
    分别求出x1(n)=R8(n)和x2(n)=u(n)的系统响应,并画出波形。

    b.
    求出系统的单位脉冲响应,画出其波形。

    2、 给定系统的单位脉冲响应为

    h1(n)=R10(n),
    h2(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)

    用线性卷积法求x1(n)=R8(n)分别对系统h1(n) 和h2(n)的输出响应,并画出波形。

    3、 给定一谐振器的差分方程为

    y(n)=1.8237y(n-1)-0.9801y(n-2)+b0x(n)-b0x(x-2)

    令b0=1/100.49,谐振器的谐振频率为0.4rad.

    a.
    用实验方法检查系统是否稳定。输入信号为u(n)时,画出系统输出波形。

    b.
    给定输入信号为:x(n)=sin(0.014n)+sin(0.4n),求出系统的输出响应,并画出其波形。

    四、实验代码及实验结果

    1、

    A=[1,-0.9];

    B=[0.05,0.05]; //输入差分方程

    x1n=[1 1 1 1 1 1 1 1 zeros(1,50)];

    x2n=ones(1,128); //输入x1(n),x2(n)

    y1n=filter(B,A,x1n); .//计算x1(n)的系统响应

    y2n=filter(B,A,x2n); //计算x2(n)的系统响应

    n1=0:length(y1n)-1;

    n2=0:length(y2n)-1; //横坐标取值

    subplot(1,2,1);

    stem(n1,y1n,’.’);

    subplot(1,2,2);

    stem(n2,y2n,’.’); //画图,左图为x1(n)的系统响应,右图为x2(n)的系统响应
    在这里插入图片描述

    hn=[1 zeros(1,50)]; //输入单位脉冲

    y3n=filter(B,A,hn);

    n3=0:length(y3n)-1;

    subplot(1,1,1);

    stem(n3,y3n,’.’); //方法同上

    在这里插入图片描述

    2、

    h1n=[1 1 1 1 1 1 1 1 1 1 ];

    h2n=[1 2.5 2.5 1 zeros(1,50)];

    x1n=[1 1 1 1 1 1 1 1 ];

    y1n=conv(h1n,x1n); //conv(x,y),求卷积和函数

    n1=0:length(y1n)-1;

    subplot(1,2,1); //左图为x1(n)对h1(n)的输出响应

    stem(n1,y1n,’.’);

    y2n=conv(h2n,x1n); //右图为x1(n)对h2(n)的输出响应

    n2=0:length(y2n)-1;

    subplot(1,2,2);

    stem(n2,y2n,’.’); //方法同上

    在这里插入图片描述

    3、

    A=[1 -1.8237 0.9801];

    B=[1/100.49 0 -1/100.49];

    xn=sin(0.014n)+sin(0.4n);

    y4n=filter(B,A,xn);

    n4=0:length(y4n)-1;

    subplot(1,1,1);

    stem(n4,y4n,’.’);
    在这里插入图片描述

    un1=ones(1,201);

    y1n=filter(B,A,un1);

    n1=0:length(y1n)-1;

    subplot(1,2,1);

    stem(n1,y1n,’.’);

    un2=ones(1,1001);

    y2n=filter(B,A,un2);

    n2=0:length(y2n)-1;

    subplot(1,2,2);

    stem(n2,y2n,’.’);

    在这里插入图片描述

    五、思考题

    1、 如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷积法求系统的响应?如何求?

    答:a.对输入序列分段;b.求单位脉冲响应h(n)与各段的卷积;c.将各段卷积结果相加。

    2、 如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号会有何变化?

    答:时域变化会变缓。

    展开全文
  • 系统稳定性评测

    千次阅读 2018-12-22 18:36:31
    系统稳定性评测 什么是系统的稳定性评测呢,主要验证在以下两个条件下,系统依然能够正常的提供服务。 持续施压 暴力破坏 持续施压 这一点和自动化遍历的原理很像, 我们长期运行自动化测试, 持续给后端服务...

     

     

    系统稳定性评测

    什么是系统的稳定性评测呢,主要验证在以下两个条件下,系统依然能够正常的提供服务。

    • 持续施压
    • 暴力破坏

    持续施压

    这一点和自动化遍历的原理很像, 我们长期运行自动化测试, 持续给后端服务施压。 只不过有两个不一样的地方

    • 自动化遍历是单线程执行, 而在后端的稳定性测试中,要放大这个量。 比如说本来一次自动化测试是启动50个线程,但我继续放大这个量,比如我放大10倍, 100倍。让这个系统处于一种较高的压力。
    • 自动化遍历是随机点击,深度不够。 而后端的稳定性测试的场景一般是针对整个系统的,所以测试用例都是应用级的,而不是单接口测试。 也就是说不管自动化的方式是UI的还是接口的还是SDK的,都要讲独立的API组合各种业务场景。 覆盖的真实场景越多越好。

    这里需要注意的是我们需要让系统在这个场景下持续运行很长一段时间。 多久呢? 比如说1个星期,甚至更久, 因为很多诸如内存泄露的问题是会在系统运行很久之后才会出现的。所以在这期我们也需要间监控服务是否出现异常,自动化测试用例是否会出现失败。 

    实现思路:
    最简单的方法就是写个java的 schedulerExecutor。 按策略持续并发的调度自动化测试。比如以下是部分核心代码:

     

    暴力破坏

    第二种测试就是在人为造成的事故的场景下,系统依然能够稳定运行。比如现在的软件很多都是微服务架构了, 并且做了很多高可用,负载均衡,容灾等设计。 所以是保证了即便部分模块甚至节点出现问题,也能够保证系统正常提供服务的。 为了验证这一点,我们自然也需要做一点破坏工作。 比如我们公司的产品是部署再k8s中的,那么在运行稳定测试的途中就要使用工具按不同的策略kill不同的服务。 在业界有个很出名的工具叫chaos monkey, 是在云服务器中模拟各种事故,对服务进行各种破坏的工具。 当然它的使用场景有限,无法应用在k8s集群中,但我们可以借鉴其思路调用k8s的API开发自己的工具。

    比如我们按事故等级划分:

    • 等级一:周期随机破坏一个服务的部分实例
    • 等级二:周期按百分比随机破坏数个服务的部分实例
    • 等级三:周期破坏所有服务的部分示例

    PS:以上说的部分实例是因为都是开启了高可用与负载均衡的部署架构,理论上只要有一个实例就可以对外提供服务。 所以在每个事故等级下都会有更细粒度的划分。 比如:

    • 只破坏当前服务的一个实例
    • 破坏当前服务的多个实例(由测试人员自己指定)
    • 只留下当前服务的一个实例,其他实例均破坏掉。

    实现思路:
    也很简单,封装k8s的API server达到按策略随机破坏的目的。以下是核心代码:

    package chaos;
    
    import chaos.pod.PodKillPolicy;
    import chaos.pod.PodKiller;
    import com.fasterxml.jackson.annotation.JsonProperty;
    import io.fabric8.kubernetes.client.DefaultKubernetesClient;
    import k8s.K8SClientFactory;
    import lombok.Data;
    import lombok.extern.log4j.Log4j;
    import utils.Common;
    
    import java.util.*;
    import java.util.concurrent.TimeUnit;
    
    /**
     * Created by sungaofei on 18/11/7.
     */
    @Data
    @Log4j
    public class NamespaceKiller {
        @JsonProperty
        private String namespace;
        @JsonProperty
        private List<String> deploymentList = new ArrayList<>();
    
        @JsonProperty
        private PodKillPolicy podKillPolicy;
        @JsonProperty
        private AccidentLevel accidentLevel = AccidentLevel.ONE_SERVICE;
        @JsonProperty
        private double percent;
    
        public NamespaceKiller(String namespace) {
            this.namespace = namespace;
            DefaultKubernetesClient k8s = K8SClientFactory.getK8SClient();
            k8s.inNamespace(namespace).apps().deployments().list().getItems().forEach((deploy) -> this.deploymentList.add(deploy.getMetadata().getName()));
            this.podKillPolicy = PodKillPolicy.KILL_ONE;
        }
    
    
        public void kill() {
            log.info(Common.parseJson(this));
    
            List<PodKiller> podKillers = new ArrayList<>();
    
            for (String deployName : deploymentList) {
                PodKiller podKiller = new PodKiller(namespace, deployName, podKillPolicy);
                podKillers.add(podKiller);
            }
    
            Random random = new Random();
    
            // 如果策略是按照百分比去kill掉namespace下的服务
            if (accidentLevel.equals(AccidentLevel.Percent_Kill)) {
                int size = new Long(Math.round((double) podKillers.size() * percent)).intValue();
                Map<Integer, PodKiller> deletedPod = new HashMap<>();
                for (int i = 0; i < size; i++) {
    
                    // 如果随机的index是之前已经被删除过的。 那么需要重新随机
                    int index = random.nextInt(podKillers.size());
                    while (true){
                        if (!deletedPod.containsKey(index)){
                            deletedPod.put(index, podKillers.get(index));
                            break;
                        }
                        log.info("recreate the random index");
                        index = random.nextInt(podKillers.size());
                    }
    
                    PodKiller podKiller = podKillers.get(index);
                    podKiller.kill();
                    deletedPod.put(index, podKiller);
                }
            }
    
            // 如果策略是一个namespace下只随机杀死一个deployment的服务的情况
            if (accidentLevel.equals(AccidentLevel.ONE_SERVICE)){
                int index = random.nextInt(podKillers.size());
                podKillers.get(index).kill();
            }
    
            // 如果策略是杀死一个namespace下所有的服务的情况
            if (accidentLevel.equals(AccidentLevel.ALL_SERVICES)){
                podKillers.forEach(PodKiller::kill);
            }
    
        }
    
    
    }
    

    监控

    在稳定性测试中必然少不了监控体系, 因为我们在评测整个系统的稳定性的时候,必然要附带各个资源使用指标, 以及各种事故分析报告。 所以要对系统的方方面面提供完善的监控体系, 而我们使用的是prometheus 监控体系,k8s已经比较好的支持 prometheus了,所以可以整体集成进k8s中。 可以定制自己的仪表盘来可视化我们的事故分析报告。 比如使用granfna制定过去10天内OOM的事故报告:

     

    具体prometheus的教程我就先不写了。。。有好多。。不搬了。。

    结尾

    在软件界针对可靠性有以下指标:
    3个9:(1-99.9%)*365*24=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。
    4个9:(1-99.99%)*365*24=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。
    5个9:(1-99.999%)*365*24*60=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。

    稳定性测试的目标之一就是验证并辅助系统达到更高的指标。

     作者:孙高飞

     

    展开全文
  • 实验1 系统响应及系统稳定性

    千次阅读 2020-10-22 12:43:18
    实验1系统响应及系统稳定性 实验安全规则(本实验项目安全注意事项) 数字信号处理及DSP应用实验在计算机Matlab上用仿真方式完成,不需要硬件设备,请不要开启计算机桌台上的其它硬件设备; 实验可以一人一机单独...
  • 系统稳定性治理最佳实践

    千次阅读 2020-02-11 13:19:40
    系统稳定性治理最佳实践 稳定压倒一切,没有稳定就没有生成。国家是如此,业务系统也是如此。老子说,“治大国若烹小鲜”,治理系统也是要做到同样,要掌握火候,精选食材,用料恰当,辅以煎炒烹炸煮,则方能出...
  • 何谓系统稳定性?控制系统理论认为:系统受到某种干扰而偏离正常状态,当干扰消除,如果系统的扰动能逐渐收敛并最终恢复正常状态,则系统是稳定的,反之,系统偏离越来越大,则是不稳定的,所以,稳定...
  • 2020年,注定是个不平凡的一年。疫情的蔓延打乱了大家既定的原有的计划,同时也催生了一些在线业务办理能力的应用诉求,作为技术同学,需要在短时间内快速支持建设系统能力并保障其运行系统稳定性...
  • 谈谈系统稳定性设计

    千次阅读 2018-09-29 19:19:08
    转载自 谈谈系统稳定性设计 一、差旅随想   因为base在分公司,需要经常去总部出差,所以搭乘飞机成了家常便饭,很多时候坐在飞机上会不由的感叹,设计制造这样精密复杂的机器的那帮人真的是了不起,他们是...
  • 根据bode图判断系统稳定性

    千次阅读 2020-02-05 23:51:40
    比如如果中频段是-20dB衰减,那么我们希望中频段能够有较大带宽,以保证系统稳定性。 2、截止频率或被称之为剪切频率,wc越高,则系统快速性越好。 3、低频段希望保证较高的增益,以便能精准的跟踪被控量,即稳态...
  • 零极点和系统稳定性关系

    万次阅读 多人点赞 2020-04-01 14:49:47
    1、零点 零点:使系统传递函数G(s)为0的s的值,其中s为复数。比如: ...3、系统稳定性 稳定性判断:在零初始条件下,当且仅当t→∞t\rightarrow \inftyt→∞,闭环系统的单位脉冲响应为零时,...
  • 系统稳定性,为什么看环路增益
  • 随想录(软件系统稳定性

    千次阅读 2017-03-12 23:08:12
    【 声明:版权所有,欢迎转载,请勿用于商业用途。...就拿市场上比较常见的云系统稳定性来说,一般有两个数据是大家比较关注的。一个是软件稳定性,要达到99.95%,另外一个就是数据的稳定性,要达到百万
  • 高并发情况下使用乐观锁保证系统稳定性和幂等性 加粗样式
  • 一、系统稳定性概念 二、系统稳定性判断 一、系统稳定性概念 系统加入扰动后偏离了原来的状态,当把干扰去掉后,系统如果能恢复到原来的状态,则说明系统稳定。 二、系统稳定性判断 脉冲信号可以视为典型的扰动信号...
  • MTK平台系统稳定性分析

    千次阅读 2016-07-05 15:23:21
    简介 系统稳定性目前主要是解决系统死机重启。 分为两部分:Android /kernel Kernel 分析需要的文件和工具: Mtklog, vmlinux ,gat工具,解析vmlinux的脚本。 Vmlinux路径:alps\out\target\product\k55v1_64_op...
  • 在互联网系统中,开发效率与系统稳定性与产品成败非常相关。开发效率在一定程度反映了团队的执行力,快速开发能力带来了产品的竞争优势。系统稳定性(包括安全及性能等)则是产品的后防线,稍有失误则会给产品带来很大...
  • 摘要:阿里巴巴双11备战期间,保障系统稳定性最大的难题在于容量规划,而容量规划最大的难题在于准确评估从用户登录到完成购买的整个链条中,核心页面和交易支付的实际承载能力。在首届阿里巴巴中间件技术峰会,阿里...
  • 稳定性进行评估。 这类计算方式我们最常见,毕竟你的系统在一段时间里不出现故障,就说明它很稳定嘛!不 过,在真实的使用场景中,怎么样才算是可用时长,什么情况下又是不可用时长,这个是怎 么定义的呢? 时间维度...
  •       Android各种卡死黑屏系统稳定性问题Log抓取大荟萃    作为Androd开发工作者的我们,经常会在实际的开发工作中遇到各种Android卡死黑屏系统稳定性等问题,遇到如上问题除了考验Android基本功是否扎实...
  • 在延迟时间较小时,系统的响应能够逼近对应连续系统的响应,但延迟时间过大时,对应数字控制系统的极点将越过单位圆边界,系统失去稳定性。 《机械振动耦合反馈延时控制系统特性研究》
  • 系统稳定性指标计算器

    千次阅读 2018-01-15 21:53:29
    自己写的,用于计算系统的服务稳定性工具类:   /** * * @ClassName StabilityCalculator * @author kanpiaoxue * @version 1.0 * @CreateTime 2018/01/15 21:20:06 * @Description 稳定性计算器 *...
  • 三、稳定性建设四要素 第一要素:人 第二要素:工具 第三要素:预案 第四要素:目标 四、稳定性建设四个方向 第一个方向:根基要抓牢(45%) 第二个方向:工作在日常(30%) 第三个方向:预案是关键(15%) ...
  • 系统稳定性的一些理解

    千次阅读 2011-07-23 21:48:12
    系统稳定性的一些理解 在数字信号处理中,系统的稳定性是一个很重要的问题,比如说在滤波器的设计中,都要求系统必须稳定,否则是无法使用的。那么,如何判断系统是否稳定呢? 从定义上说,如果输入有界,则输出...
  • 本文记录是京东双11前夕一次线上系统问题,从问题这方面入手,引发的对系统稳定性因素的思考及总结。“千里之堤毁于蚁穴“,如何发现系统中”蚁穴“是我们系统开发者不断追求的目标。 夜幕降临 方法异常线上报警,...
  • 简介: 影响系统稳定性的架构设计有哪些?一个可持续保障的研发运维流程机制是怎样的?如何培养团队技术人员的意识和能力?本文作者以团队技术负责人的视角,从三大技术要素和一个业务要素,分享在稳定性建设上的...
  • 系统稳定性设计原则:简单、冗余、标准化、健壮 2018-07-19 07:20 作者介绍 淇公,蚂蚁金服技术专家。热爱java和一些函数式语言,长期关注系统稳定性领域 一、差旅随想 因为base在分公司,需要经常去总部出差...
  • 该版本在上一版的基础上,对 MySQL 兼容性、系统稳定性和优化器做了很多改进。更新内容TiDB支持限制单条 SQL 语句使用内存的大小,减少程序 OOM 风险支持下推流式聚合算子到 TiKV支持配置文件的合法性检测支持 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,621
精华内容 21,448
关键字:

系统稳定性