码歌老薛大话Java性能调优,Java调优概述(一)

老薛读书会

1 第一本书大话java性能调优

书籍简单介绍,今天和大家读的是<span style="color:green">大话java性能调优</span>这本书,IBM技术专家周明耀先生编纂。书籍java基础类库的调优策略->并行程序优化策略->JVM调优监控做了比较系统的解读,如果你也想在编写程序时,有一个很好的全方位把控,我个人还是比较推荐这本图书的。

2 章节介绍

今天和大家介绍的的是性能调优策略概述,本书的第一章节,第一章节主要是让大家管中窥豹,在脑海里构建一个稍微全面一点的关于调优的系统概念。

2-1 第一章知识图谱

知识图谱

2-1-1 为什么调优:

调优目的

1:百万、千万PV访问时如何保证数据一致性?淘宝,12306对于库存数据的一致性要求极高但是如何应对高并发下的性能瓶颈问题?

这里有个例子,为什么奥运会门票票务系统采用抽奖方式?核心还是不需要支持抢购业务,后期只负责手机信息,不保证数据一致性,这样没有并发锁带来的一系列问题,通过水平扩展就可以提高克服性能瓶颈。

2:对于百度等每天访问量很高的业务,如何提高访问速度问题?

为什么前台网站上的很多图片都会加宽度高度,就是为了浏览器解析时能够提高一丢丢效率,当然我们说的缓存等在这里我们暂且不提。

3:如何提高减少编写代码?

比如对于查找1-1000000之间的素数,如何更高效。好的算法和数据结构能够我写更少的代码。更高效的完成业务模型。当然又是我们将简单需求通过很多类层面构建则不再这个考虑范围内,毕竟那是在提高后期扩展性桑考量的,不再一个维度上面

4:CPU如何带动网络资源的这个牛车。

多核多硬件,利用更多的cpu资源做更多的事情,充分压榨cpu的能力。比如缓存,比如异步,比如并行等。目前通过虚拟化打破硬件之间的不可分割障碍,更好的节省成本,提高运维便利,但是同样java应用部署到物理机和虚拟化环境的部署也变相提高了程序员的综合能力。

2-1-2 哪些方向可以让我们调优:

调优方向

I 冯诺依曼结构弊端分析:

冯诺依曼结构的特点

①:总线结构,所有资源通过IO总线链接

②:指令和数据是存储在一起的

  • 1:CPU的执行效率和内存容量增长大于两者之间流量,导致CPU花费大量时间将内存数据搬入搬出。总线瓶颈。
  • 2:流水线的工作,导致数据准备好,也必须按照串行指令执行。降低了系统运行效率。
  • 3:高级语言最后总会经过编译器去将语言解释为一个线性存储模型进行执行,越高级的语言或者越简洁的代码的可读性以及编译速度都在一定程度上降低了。
  • 4:冯诺依曼数值处理很在行,但是对于非数值处理效率较低

解决方案:

  • 1:并行计算以及高速缓存区提高CPU的效率。
  • 2:数据流驱动程序执行,数据准备好执行相关操作
  • 3:不用二进制的作为信息载体,使用光子、量子计算机。

II 计算资源瓶颈问题:

计算资源瓶颈
  • 某些资源对于cpu的征用时长导致拖慢整个系统。比如视频分析等。
  • 内存的大小,最严重的就是OOM等问题
  • 磁盘IO和网络传输都是由于本省就很低效。程序执行可能等待磁盘IO的读写或者网络环境的不确定性,导致系统瓶颈。
  • 数据库的资源链接以及读写操作的等锁等等操作,都有可能造成系统过慢。
  • 多线程程序开发,或者高并发程序下的锁竞争问题,导致程序cpu利用率降低,上下文切换的耗时都会带来过度的资源损耗。还要严重的死锁问题。
  • 异常的捕获和处理是很消耗性能的。

III 衡量指标:

衡量指标

IV 优化的目标:

  • 1: 编写高效的代码,缩短程序的CPI(就是执行一个cpu指令所消耗的cpu的时钟数)。
  • 2: 使用更加高效的算法。比如对于数组的排序选择比较简单的快速排序而不是冒泡或者是选择排序。
  • 3:减少锁的竞争。

V 优化策略:

优化策略
  • 1:用时间换空间,比如网络传输过程中压缩数据的算法。由于网络传输的本身瓶颈在与网络传输部分,所以虽然压缩算法比较耗时,但是可以通过时间来换取空间。
  • 2:用空间换时间,比如增加的缓存层,数据镜像或者是负载均衡都是用空间换区时间。
  • 3:简化代码,比如减少递归的使用,当然尾递归除外。或者尽量通过一些判定保证代码的健壮性而不是直接通过异常等等。
  • 4:并行处理,将多核cpu的利用率更好的提升。或者将单核cpu进行资源隔离,将cpu的计算资源进行切分,这样也可以。

注意所有的内容都是基于28法则,大多数80%的资源消耗可以通过改变20%的系统设计或者程序代码而提高。不一定要做的所有的面面俱到。

2-1-3 如何调优:

前端优化
  • 1:负载: 通过CDN让用户连接到最近的服务器,通过DNS的负载均衡将用户请求均发到多个Web服务器上。
  • 2:减少连接数: 通过css切分图片,将单一用户的连接数降低。
  • 3:减少网页大小增加带宽
  • 4:页面静态化:内存直接读取不变信息,减少磁盘IO
  • 5:优化查询:通过Redis等方式加入缓存,同样需要解决缓存更新,如何保证缓存和数据库数据的一致性问题,缓存换页:比如常见的LRU、FIFO等算法
服务器
  • 1:数据冗余:降低表连接
  • 2:数据镜像:Docker实现
  • 3:数据分区:比如逻辑切分表,字段切分表,平均切分表等等
  • 4:负载均衡:F5、Tengine、Nginx
  • 5:异步:延时处理某些内容,然后将各个程序做成并行化的
  • 6:节流阀:防止外部调用超过系统自己的最大负载,导致系统被拖垮
  • 7:批处理: 相同类别的信息放在一起请求批量处理,一般适用于离线模式。
  • 8:垃圾回收:作为java程序员必回的技能,在后续章节会系统概述
服务器
  • 云计算:每秒10万亿次的运算,提高计算能力。提供比如按需付费等模式
  • 虚拟化:比如目前用的很多的Docker
  • 多核技术:多线程、多进程程序得以执行的前提
  • 异构计算:在异构计算系统进行并行计算称之为异构计算,比如我们跑的一些数据模型可能会在GPU进行这就是一个典型的异构计算
  • 高速的网络技术

最后还有一些架构层面上而言,我们一般将安全作为一个首要指标。
一般情况下我们调优时通过两种途径解决问题,从下而上,自上而下。简单而言自下而上就是从底层硬件配置开始逐渐向上的方式进行分析,查找性能问题,与之相反则就是自下而上。

如果大家也想加入老薛的读书会,请直接私信我即可,或者后台留言回复。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容