
性能优化
文章平均质量分 72
探索未知的自己
人生一场,也遵循成劫、住劫、坏劫、空劫四劫循环
展开
-
apache ignite 分布式内存数据库
1 简介ignite是分布式内存网格的一种实现,其基于java平台,具有可持久化,分布式事务,分布式计算等特点,此外还支持丰富的键值存储以及SQL语法(基于h2引擎),可以看成是一个分布式内存数据库。2 基本使用ignite有两种使用方式: 一种是从官网下载release版本程序,解压运行部署,另外一种是通过嵌入式集成进现有应用程序。3 常用命令命令 功能 top 查看集群网络拓扑图 cache 查看整体缓存情况 config 查看节点配置 .原创 2021-08-08 12:28:37 · 2590 阅读 · 0 评论 -
清理docker未使用镜像惊魂
现象服务偶然超时,异常,不可用。。。首先发现服务磁盘100%然后发现docker 安装目录有很多废弃镜像占用空间很大再进行清理发现清理掉了数据库启动的容器搜寻数据库容器内容启动docker 镜像挂载数据库容器内容最后恢复参考文献https://www.php.cn/manual/view/36050.html...原创 2021-03-19 09:09:11 · 720 阅读 · 0 评论 -
MySQL 瓶颈及应对措施和实践
大纲序言一 MySQL 瓶颈及应对措施二 mysql 具体优化参数三 mysql 优化实践四 总结参考文献序言1 首先给出性能瓶颈定位Show命令我们可以通过show命令查看MySQL状态及变量,找到系统的瓶颈:Mysql> show status ——显示状态信息(扩展show status like ‘XXX’)Mysql&...原创 2020-01-15 16:54:15 · 714 阅读 · 2 评论 -
java String 最长长度和占用内存大小
一 序String在内存中的最大长度理论上是int型变量的最大值,Integer.MAX_VALUE,String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535.二 介绍1、String的内部实现通过一个字符数组来维护字符序列,其声名如下:private final char value[];2所以,String的最大长度取决于字符数......原创 2019-10-25 12:04:59 · 33624 阅读 · 4 评论 -
JVM内存模型、指令重排、内存屏障概念解析
在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发线程中绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的二层语义分别是什么,等?一、什么是重排序请先看这样一段代码package com.cby....原创 2018-10-16 17:34:09 · 392 阅读 · 0 评论 -
从传统技术团队职能化向敏捷迭代转变成功案例(互联网公司快速扩张阶段研发团队效率提升)
一 序言 忙不完的事情,解不完的bug,每次发版都得集体熬个大通宵。干得多,结果还不好。相信绝大部分技术工作者都有过这样的困扰。今天,公司敏捷教练蔡春华以团队敏捷实践为例,与大家分享如何提升研发效率。某研发团队处在事多、效果差的漩涡之中。在这样的背景下,公司敏捷教练团队受邀,和该研发团队一起,通过4个迭代的持续改进,研发效率和质量取得了显著提升: 大幅缩短了需求开发时间,从...原创 2018-10-17 13:38:55 · 1638 阅读 · 0 评论 -
Fork/Join 型线程池与 Work-Stealing 算法
JDK 1.7 时,标准类库添加了 ForkJoinPool,作为对 Fork/Join 型线程池的实现。Fork 在英文中有 分叉 的意思,而 Join有 合并 的意思。ForkJoinPool 的功能也是如此:Fork 将大任务分叉为多个小任务,然后让小任务执行,Join 是获得小任务的结果,然后进行合并,将合并的结果作为大任务的结果 —— 并且这会是一个递归的过程 —— 因为任务如果足够大,...原创 2018-10-17 14:16:31 · 1601 阅读 · 1 评论 -
TCC两阶段补偿型
TCC方案是可能是目前最火的一种柔性事务方案了。关于TCC(Try-Confirm-Cancel)的概念,最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以...转载 2018-11-06 13:54:16 · 13760 阅读 · 5 评论 -
jvm G1 深度分析
大纲介绍第一,垃圾回收简介第二,G1介绍第三,G1 Young GC第四,G1 Mix GC第五,调优实践第六,G1相关处理参数第七,总结本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践和相关参数列表。一,垃圾回收简介首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么?简单......原创 2018-11-06 13:56:40 · 21594 阅读 · 7 评论 -
java 自旋锁
一 大纲1 自旋锁定义2 自旋锁原理3 自旋锁时间阈值4 自旋锁分类5 自旋锁应用6 自旋锁开启二 自旋锁定义何谓自旋锁? 它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是...原创 2019-04-26 15:05:18 · 2519 阅读 · 0 评论 -
CLH锁,MCS锁,自旋锁分析和实例
一、1、SMP(Symmetric Multi-Processor) SMP(Symmetric Multi-Processing)对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同。其主要特征是共享,包含对CPU,内存,I/O等进行共享。 SMP能够保证内存一致性,但这些共享的资源很可能成为性能瓶颈,随着CPU数量的增加,每个CPU...原创 2018-09-30 17:09:26 · 1212 阅读 · 0 评论 -
微服务架构下的数据一致性保证
从2014年开始,微服务逐渐进入大家的实现,被认为是下一代实现信息化的有效手段。设计到系统,其中绕不开的就是数据一致性,从本地事务,到后来的分布式事务,都能够有效的保证数据一致性。但是在微服务架构中,这两种方式都不是最好的选择。1. 使用本地事务和分布式事务保证一致性在传统的单击应用中,最简单、最直接、最普遍的会使用一个关系型数据库,通过关系型数据库的事务保证数据的一致性。这种事务有四个基...原创 2018-09-30 17:30:08 · 7159 阅读 · 0 评论 -
Redis 高负载下的中断优化(基于京东redis集群高负载下丢包案例分析)
Redis 高负载下的中断优化陈炳宇背景2015年年初以来,随着Redis产品的用户量越来越大,接入服务越来越多,再加上京东Memcache和Redis两套缓存融合,Redis服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。原本稳定的环境也因为请求量的上涨带来了很多不稳定的因素,其中一直困扰我们的就是网卡丢包问题。起初...原创 2018-10-01 10:22:12 · 1920 阅读 · 0 评论 -
Redis Rehash机制的探索和实践(京东Redis 集群)
背景京东内部Redis 集群平台是京东技术团队基于Redis Cluster打造的缓存系统。经过不断的迭代研发,目前已形成一整套自动化运维体系:涵盖一键运维集群、细粒度的监控、支持自动扩缩容以及热点Key监控等完整的解决方案。同时服务端通过Docker进行部署,最大程度的提高运维的灵活性。分布式缓存Redis 缓存产品自2014年上线至今,已在京东内部广泛使用,存储容量超过80T,日均调用量也...原创 2018-10-01 11:34:41 · 834 阅读 · 0 评论 -
Innodb中的事务隔离级别和锁的关系分析
前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。二 锁#一...原创 2018-10-02 09:56:11 · 288 阅读 · 0 评论 -
MySQL索引算法原理及慢查询优化
前言MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最...原创 2018-10-02 11:11:35 · 459 阅读 · 0 评论 -
性能优化原则和优化模式
摘要性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高服务可用性三者相互矛盾,不可兼得。例如:增加缓存可以降低平均响应时间,但是处理线程数量会因为缓存过大而有所限制,从而降低系统吞吐量;为了提高服务可用性,对异常请求重复调...原创 2018-10-02 12:08:32 · 5216 阅读 · 1 评论 -
JDK ,CGLIB、Javassist、ASM之间的差别和Class文件格式(深度解析)
一 class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成...原创 2018-10-07 11:09:27 · 1518 阅读 · 0 评论 -
JVM性能调优(京东内部系统高性能优化思路)
一 简介jvm堆和栈空间设置堆空间:heap=young+old,既:堆空间=年轻代+老年代。其中年轻代:young=2*survivor+eden,既:年轻代=两个survivor空间+1个eden空间。堆空间保存了new出对象和数组的实际数据,也是gc最爱回收的。同时对对空间进行了分代管理: 年轻代:创建的新对象会被放入年轻代的eden空间,而年轻代gc采用复制算法,复制算法会把内存...原创 2018-09-30 14:14:27 · 3270 阅读 · 0 评论 -
高性能队列 disruptor(京东电商云替换jdk队列的实践分析)
1.Disruptor的背景 disruptor是LAMX架构的一种设计,而LAMX是一种新型的零售金融交易平台。disruptor主要用于大规模低延迟的高并发业务场景,其核心disruptor是一个基于事件源驱动机制的业务逻辑处理器,整个业务逻辑处理器完全运行在内存中,disruptor在无锁的网络情况下,实现了Queue的并发。2.Disruptor的适用场景 disrupto...原创 2018-09-30 14:45:13 · 1329 阅读 · 0 评论 -
Synchronized 机制深度分析
Synchronized在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬...原创 2018-09-30 17:06:08 · 2518 阅读 · 0 评论 -
系统性能指标体现和优化实践
一 前沿在互联网网站百花齐放的今天,网站响应速度是用户体验的第一要素,其重要性不言而喻,这里有几个关于响应时间的重要条件:用户在浏览网页时,不会注意到少于0.1秒的延迟; 少于1秒的延迟不会中断用户的正常思维, 但是一些延迟会被用户注意到; 延迟时间少于10秒,用户会继续等待响应; 延迟时间超过10秒后,用户将会放弃并开始其他操作;而在京东,“消费者第一”是公司的第一价值观,为了给...原创 2017-12-15 09:48:04 · 5028 阅读 · 0 评论