cpu接口

记一次接口压力测试与性能调优

帅比萌擦擦* 提交于 2019-11-26 05:21:16
〇、经验总结 1.如果总的CPU占用率偏高,且基本都被业务线程占用时,CPU占用率过高的原因跟JVM参数大小没有直接关系,而跟具体的业务逻辑有关。 2.当设置JVM堆内存偏小时,GC频繁会导致业务线程停顿增多,TPS下降,最后CPU占用率也低了; 3.当设置JVM堆内存偏大时,GC次数下降,TPS上升,CPU占用率立刻上升。 4.Dom4J 这个xml解析工具性能很强大,但在处理节点和层级都较多的xml文本时,整体解析效率依然会成为业务处理瓶颈。 一、背景说明 最近新项目上线,需要对项目中的一个HTTP接口进行压力测试,以保证接口性能稳定性。该接口涉及到的主要业务是接收HTTP请求,获取请求中的xml报文参数,并将xml报文解析后存入MySQL数据库。接口业务流程如下: 该业务接口部署的服务器配置和部署MySQL组件的服务器配置一致,都是4核8G,50G普通硬盘,并且处于同一个内网网段,我们预估的性能指标要达到200并发,500TPS。 在压力测试过程中,我们重点关注TPS、GC次数、CPU占用率和接口响应时间等指标。 二、测试过程 完成项目部署后,我们开始编辑jemeter测试脚本,设置压力测试的标准为200个并发线程,在10秒内全部启动,持续压测时间15分钟,接着开始启动jemeter脚本进行测试。 1、第一次压力测试 (1)JVM配置 垃圾收集策略包括

深入iOS系统底层之指令集介绍

蹲街弑〆低调 提交于 2019-11-26 03:32:53
不以规矩.不能成方圆。--《孟子·离娄上》 说到指令集以及CPU架构体系,大家就会想到计算机专业课程里面的计算机体系结构的方面的内容。既然课程中已经有了的内容我就不想那么枯燥的去复述一遍,而是先看一个类的定义: //定义寄存器编号 typedef enum : int { Reg0, Reg1, Reg2, Reg3 } RegNum; //定义系统调用编号 typedef enum : int { Int3 //设备输出,将寄存器Reg0中的内容输出到屏幕 } Interrupt; //定义指令索引 typedef int Instruct; /** 虚拟CPU类,模拟CPU所提供的指令。 虚拟CPU由4个寄存器和运算部件组成。四个寄存器的编号分别定义在RegNum中;运算部件提供了赋值、加减、比较、跳转9个指令。 */ @interface VCPU : NSObject //将一个常量值赋值给编号为reg的寄存器中。 -(void)moveFromConst:(int)val toReg:(RegNum)reg; //将编号为reg1的寄存器中的值赋值给编号为reg2的寄存器中。 -(void)moveFromReg:(RegNum)reg1 toReg:(RegNum)reg2; //将编号为reg的寄存器中的值赋值给地址为addr的内存中。 -(void