自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 jvm内存区域

jvm在执行程序过程中将内存分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁时间,有的区域随着虚拟机进程的启动而一直存在,有的区域则是依赖用户线程的启动和结束而建立和销毁。程序计数器。程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。java虚拟机栈。同程序计数器一样java虚拟机栈也是线程私有的,其生命周期与线程相同。栈用于存储局部变量表、操作数栈、动态连接、方法出口等。方法被调用直到执行完毕,就对应着一个栈帧从入栈到出栈。如果线程请求的栈深度大于虚拟机所

2021-02-06 18:54:30 159 1

原创 redis内存优化必知必会

redis为了平衡性能与空间开销,每种数据类型至少提供了两种编码实现,有节省内存空间的实现,也有提高性能的实现。满足一定条件时类型的编码实现会自动转换,不过redis并不支持编码实现的回退,因为频繁的增删操作,数据项压缩编码实现转换非常消耗CPU。redis的内存优化一般从以下几个方面着手过期键删除#查看当前对象使用的数据类型type#查看类型的内部编码encoding高并发写入场景中,在条件允许的情况下字符串长度控制在39字节以内,可减少创建redisObject内存分配次数,从而提高性能

2021-01-31 23:12:39 219

原创 redis的内存回收策略

redis的内存回收主要做了两件事情,一件是删除到达过期时间的键对象,另一件是内存到达配置的上限时触发的内存溢出控制。过期键删除如果redis严格按照过期时间来删除过期键会导致消耗大量的CPU,这对于单线程的redis来说成本过高,因此redis使用惰性删除和定时删除机制来回收过期键的内存惰性删除客户端查询带有过期属性的key时,先判断如果超过过期时间就执行删除并返回空,这样可以节省CPU开销,但是单独使用这种过期键删除方式存在内存泄露问题。如果过期键一直没被访问,那内存将无法得到释放。因此redi

2021-01-31 19:56:11 225

原创 redis哈希类型的内存优化技巧

—8.3

2021-01-30 21:01:10 260

原创 redis数据结构之字符串

。。。。

2021-01-30 18:52:47 95

原创 redis数据结构之有序集合

。。。

2021-01-30 18:50:58 283

原创 redis数据结构之集合

。。。

2021-01-30 18:49:51 236

原创 redis数据结构之列表

。。。。

2021-01-30 18:48:58 79

原创 redis数据结构之哈希

。。。

2021-01-30 18:48:07 82

原创 redis的api

redis提供了Stringj、hash、list、set、zset五中数据结构,由于mysql的单线程模型使用合适的数据结构和api可以避免猜到性能上的坑。ziplist可以作为多种外部数据结构的内部实现,ziplist比较节省内存,但数据量越多性能越差。在数据量比较多的情况下redis会根据配置选项将列表类型的内部实现转换为linkedlist。redis常用命令设置值set命令的选项:ex seconds:为键设置秒级过期时间px milliseconds:为键设置毫秒级过期时间n

2021-01-30 18:45:37 111

原创 redis aof的刷盘策略

redis aof是redis缓存持久化的一种方式。持久化就要将内存中的数据写入到磁盘文件中。那么,redis什么时候写磁盘呢?redis通过appendfsync配置提供了三种写盘的方式:appendfsync=always,每次修改事件都会同步aof buffer到aof文件,这种同步策略的安全性最高,效率最低,发生系统奔溃时最多丢失一个事件循环的数据。appendfsync=everysec,每秒同步一次aof buffer到aof文件,这种同步策略与每次修改都同步的策略相比,安全性差一些,但

2021-01-26 21:32:31 3160 1

原创 redo log的刷盘策略

redo log包含日志缓冲(redo log buffer)和磁盘上的日志文件(redo logfile)两部分。mysql每执行新一条dml语句都会先将日志记录在redo log buffer,后续在某个时间点再将多条操作记录写到redo log file,这种先写日志再写磁盘的技术就是mysql中WAL技术(writing-ahead logging)。在计算机的操作系统中用户空间缓冲区的数据是无法直接写入磁盘的,中间必需经过操作系统缓冲区(OS Buffer)。因此,redo log buffe

2021-01-26 16:21:40 2301 1

原创 binlog的刷盘策略

mysql只有在事务提交的时候才会记录binlog日志,此时日志还在内存中,那binlog是什么时候被刷到磁盘中的呢?mysql通过sync_binlog控制刷盘,取值范围0~n0:不强制要求刷盘,由系统自行判断什么时候将binlog写入磁盘;1:每次提交事务就将binlog写入磁盘;n:每提交n个事务将binlog写入磁盘;显然,sync_binlog为1是最安全的,每次提交事务就将binlog写入磁盘,数据一致性最好。但实际情况中,往往为了提高数据库的性能,会将sync_binlog适当设大,

2021-01-25 19:20:25 2253 3

原创 mysql日志@2

mysql的更新会使用到redo log(重做日志)和binlog(归档日志)。redo log的记录是在存储引擎InnoDB中进行;只有InnoDB有redo log;redo log记录物理日志,更新的sql语句;redo log在事务执行的时候不断地被写入(包括事务提交前),日志不随事务提交时间顺序写入,因此每个事务对应多条redo log日志;binlog文件时固定大小,是循环使用的,达到一定大小,会清除日志腾出空间;由于redo log的特性,其可用于数据库宕机后进行数据恢复来保证数据完整性;

2021-01-25 14:39:56 86

原创 mysql查询语句的执行步骤@1

第一步,建立连接。连接、获取权限、管理连接。第二步,查询缓存。对写频繁的库,查询缓存的失效会很频繁,因此不建议开启查询缓存。第三步,分析器。若没命中缓存,则进入分析器分析语句,此步骤包含此法分析、语法分析。第四步,优化器。选择索引,决定表关联顺序等第五步,执行器。校验执行权限(有查询缓存是在走查询缓存阶段进也进行权限校验),查询语句也会在优化器步骤前验证权限我们经常碰到的 ”不存在这个列字段“ 的语法错误,显然实在语句执行的分析器处理步骤抛出的。...

2021-01-25 09:33:37 127

原创 oracle数据库备份

export ORACLE_SID=实例名dt=’date+%Y%M%D%H%S’expdp user_name/user_pwd@instance directory=dump_dir dumpfile=file_namedt.DMPachemas=instancelogfile=dt.DMP achemas=instance logfile=dt.DMPachemas=instancelogfile=dt.log

2021-01-24 19:13:58 116

原创 oracle表数据闪回

1、查询历史事件的数据量select count(1) from table_name as of timestamp to_timestamp(‘2020-07-03 17:10:10’,‘yyyy-mm-dd hh24:mi:ss’);2、执行flashbackflashback table table_name to timestamp to_timestamp(‘2020-07-03 17:10:10’,‘yyyy-mm-dd hh24:mi:ss’)...

2021-01-24 16:59:04 165

原创 awr报告导出步骤

1、登陆服务器;2、切换到oracle用户,su - oracle;3、导出oracle实例ps -ef | grep smonexport ORACLE_SID=实例名sqlplus / as sysdba4、导出awr命令@/oracle/product/11.2.0/rdbms/admin/awrrpt.sql指定type为html5、表分析DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>‘用户名’), tabname=>‘table_n

2021-01-24 16:55:21 1621

原创 Eureka与zk的比较

ek与zk都为微服务集群提供了集群节点信息管理、统一命名服务,两者都通过集群实现了分布式CAP定理中的P——分区容错性。zk集群是主从设计,为保证数据的一致性所有的操作都由leader节点来完成,只有Leader才有写权限其它节点没有写权限,leader节点会将数据同步给其它节点,但zk并不确保所有节点都同步完成,只要过半节点同步完成即可,若zk的leader节点宕掉,zk就会触发选举,在剩余的非leader节点中选举出新的leader节点,zk的选举除了在leader节点宕机的情况下进行,在zk集群初始化

2021-01-23 23:36:54 871

原创 分布式之Eureka

在进行微服务技术选型时不得不提CAP理论。CAP包含的内容是Consistency(一致性)、Availavility(可用性)、Partition Tolerance(分区容错性)。CAP理论证明分布式架构的服务不可能同时满足一致性、可用性和分区容错性。因为是分布在不同机器节点上的服务共同组成集群以提供完整的服务,所以必须保证某个或几个节点故障或者网络分区故障而不影响整个服务的使用,这就是满足分区容错性。采用分布式架构的系统服务节点众多、部署分散,因此,节点故障,网络故障(延迟、丢包)是系统必须要实现的

2021-01-23 23:34:52 296

原创 设计原则之里氏替换原则

只看概念比较抽象,先上实例。一个违反里氏替换原则的例子、一个遵守里氏替换原则的例子。// 绘制图形void drawShape(Shape shape) { if (shape.type == Shape.Circle) { drawCircle((Circle) shape); } else if (shape.type == Shape.Square) { drawSquare((Square) shape); } else { ...... } // 新增图像必需要修改dra

2021-01-23 00:21:33 339

转载 RESTful API接口设计标准及规范学习

RESTful API接口设计标准及规范学习

2020-12-11 16:42:42 249

原创 关于性能测试方案的思考

性能疲劳测试性能压力测试(混合交易业务场景)待续。。。。。

2020-12-11 16:38:35 98

原创 性能测试之数据库调优

待续

2020-12-11 16:35:45 222

原创 性能测试之微服务集群配置调优

待续

2020-12-11 16:34:32 207

原创 性能测试之redis调优

待续。。。。。。

2020-12-11 16:32:03 133

原创 带宽占满导致系统可用性下降

背景:异地通过专线访问应用服务C故障:客户端出现某些业务业务场景无法操作或处理很慢,如:登陆排查步骤:通过专线流量图,查看专线流量使用情况,发现故障时间段内专线流量占满原因分析:有响应内容大或者请求内容大的业务请求将专线的带宽占满,可能是服务接口返回数据的原因、或者是请求接口的数据原因、也可能是静态资源下载的问题。通过网络抓包并结合请求处理业务定位具体的问题原因。最终,通过上述步骤定位为静态资源下载导致的带宽占满问题。首次登陆,客户端需要从服务端下载大量的静态资源。在系统使用高峰期就引爆了这个问题。

2020-12-11 16:27:37 842

原创 一个实际项目中完整的性能调优的故事

项目的实施过程中要求性能测试。系统优化涉及到了一下内容:关于oracle表空间优化,索引空间优化、表索引优化(涉及到表收集操作)关于jemeter服务端及客户端的配置参数优化(jemeter启动内存分配)关于windows客户端机器(扩大机器的tcp通信端口范围)关于服务器关于网关关于redis...

2020-12-11 15:34:24 154

原创 戏(细)说工作流——activiti

持续坚持不偷懒,立个标题先,内容待续。。。。。

2020-12-11 15:27:37 1442 6

原创 记一次实际生产中服务不可用故障

(1)现象:在某段时间内无法请求到微服务A,连接服务超时,20分钟左右服务又恢复可用(2)服务请求链路:客户端——nginx——微服务网关——微服务A排查过程:查看故障时间段经过nginx和微服务网关对微服务A的请求,在微服务A中没有请求日志,也就是说故障时间段请求并没有到达微服务。(3)故障原因分析:这种现象的原因一般有两种可能,一种是是微服务处理请求时间超过服务熔断时间,导致服务被熔断,在熔断时间内微服务是不可用的。另外一种,微服处理请求时间超过服务的负载均衡配置的请求读取超时时间,然后请求被负载

2020-12-11 15:17:21 425

原创 怎样培养英语思维

怎样培养英语思维

2020-12-11 14:11:44 114

原创 在spirngboot启动进程中对自定义系统配置文件中重复配置sql问题的优化

(1)问题:如果在sql模板配置文件中配置同名的sql脚本,会导致程序无法正确读取到相应sql配置脚本(2)优化方法:开发重复脚本配置检查组件SftlSourceChecker,在应用启动时调用其进行检查。检查不通过则打印重复项提醒日志并调用System.out(0)退出启动(3)涉及的服务:bath、basic、report(4)在使用检查组件启动服务时,目前batch服务、report服务正常、basic服务存在3项重复配置(需要配置的定义者判断删留)1、ActionEntity.FindAct

2020-12-01 11:22:42 144

原创 利用性能测试排查服务线上内存占用过高的问题续篇

内存占用率高原因排查(1)问题:服务器内存占用率居高不下(2)线索:TreeMap、ReentrantLock实例数高(excel导入组件用到)(3)原因:1、线程池线程中ThreadLocal存放的数据内存泄露。由于线程池中线程的生命很长,在线程池的线程中使用ThreadLocal必需要调用其clear方法清空TreadLocal中的数据释放内存;2、POI组件中的OPCPackage用完需调用close方法释放读写锁锁定的数据修复后压测效果:对相应功能压测10分钟后,抓取堆内存信息分析,无e

2020-12-01 11:19:02 565 4

原创 利用性能测试排查服务线上内存占用过高的问题

问题场景:生产1机,report服务进程内存占用率高,影响到下催记功能的可用性原因:实时导出excel文件的组件所用到的poi对象在jvm永久代内存中没有销毁,导致永久代内存无法回收解决方法:及时调用workbook的cose方法释放相关poi导出相关对象的引用关系排查工具:jmeter/jmap复现场景:首先,构造10万条数据。在电催任务详情压测环境模拟生产混合交易业务操作,同时登陆系统到电催任务详情页发起100笔电催任务详情报表导出。此时,通过jmeter观察服务器cup占用率与内存占用率的走势

2020-12-01 11:15:21 744

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除