性能工程高手课
庄振运
Facebook性能优化和容量管理高级专家
立即订阅
2337 人已学习
课程目录
已更新 33 讲 / 共 36 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 代码不要眼前的苟且,而要效率的提升和性能的优化
免费
开篇:认识代码性能和系统容量效率 (3讲)
01 | 程序员为什么要关心代码性能?
02 | 程序员也要关心整个系统和公司成本吗?
03 | 导读:专栏是怎么设计的?需要哪些知识?
性能定律和数理基础 (5讲)
04 | 性能工程三定律:IT业和性能优化工作的“法律法规”
05 | 概率统计和排队论:做性能工作必须懂的数理基础
06 | 性能数据的分析:如何从大量数据中看出想要的信号?
07 | 性能数据的展示:一图胜千言,说出你的数据故事
08 | 经验总结:必须熟记的一组常用性能数字
性能测试 (5讲)
09 | 性能测试的种类:如何快准狠地抓住一个测试的本质?
10 | 性能测试的规划和步骤:为什么性能测试不容易一蹴而就呢?
11 | 性能测试的工具:七大测试场景如何选择高质量的测试工具?
12 | 九条性能测试的经验和教训:如何保证测试结果可靠且可重复?
13 | 性能测试的工程集成:如何与产品开发和运维业务有机集成?
性能分析 (5讲)
14 | 性能分析概述:性能问题归根结底是什么原因?
15 | CPU篇:如何让CPU的运行不受阻碍?
16 | 内存篇:如何减少延迟提升内存分配效率?
17 | 存储篇:如何根据性能优缺点选择最合适的存储系统?
18 | 网络篇:如何步步拆解处理复杂的网络性能问题?
性能优化 (6讲)
19 | 性能优化六大原则:三要三不要,快速有效地进行优化
20 | 性能优化十大策略:如何系统地有层次地优化性能问题?
21 | CPU案例:如何提高LLC(最后一级缓存)的命中率?
22 | 系统案例:如何提高iTLB(指令地址映射)的命中率?
23 | 存储案例:如何降低SSD峰值延迟?
24 | 跨层案例:如何优化程序、OS和存储系统的交互?
性能工程实践 (5讲)
25 | 如何在生产环境中进行真实的容量测试?
26 | 怎么规划和控制数据库的复制延迟大小?
27 | 多任务环境中的Java性能问题,怎样才能不让程序互相干扰?
28 | 网络数据传输慢,问题到底出在哪了?
29 | 如何彻底发挥SSD的潜力?
容量规划与服务效率 (3讲)
30 | 服务器的管理和部署:工业界近几年有哪些发展趋势?
31 | 规划部署数据中心要考虑哪些重要因素?
32 | 服务的容量规划:怎样才能做到有备无患?
性能工程高手课
登录|注册

27 | 多任务环境中的Java性能问题,怎样才能不让程序互相干扰?

庄振运 2020-01-27
你好,我是庄振运。
我们来继续学习生产实践中的案例。在生产实践中,为了降低公司运营成本,更好地利用系统容量,并提高资源使用率,我们经常会让多个应用程序,同时运行在同一台服务器上。
但是,万事有利就有弊。这几个共存的应用程序,有可能会互相影响;有时还会导致严重的性能问题。我就遇到过,几个程序同时运行,最后导致吞吐量急剧下降的情况。
所以,今天我们就来探讨,当多个 Java 应用程序共存在一个 Linux 系统上的时候,会产生哪些性能问题?我们又该怎么解决这些问题?

怎样理解多程序互相干扰?

为了更好地理解后面的性能问题,你需要先了解一下应用程序内存管理机制的背景知识。我们运行的是 Java 程序,所以先快速复习一下 Java 的 JVM 内存管理机制
Java 程序在 Java 虚拟机 JVM 中运行,JVM 使用的内存区域称为。JVM 堆用于支持动态 Java 对象的分配,并且分为几个区域,称为“代”(例如新生代和老年代)。Java 对象首先在新生代中分配;当这些对象不再被需要时,它们会被称为 GC(Garbage Collection)的垃圾回收机制收集。发生 GC 时,JVM 会从根对象开始,一个个地检查所有对象的引用计数。如果对象的引用计数降为零,那就删除这个对象,并回收使用这个对象相应的存储空间。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《性能工程高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(5)

  • 黄海峰
    这篇干货了,以前看过好多关于jvm调优的文章或教程都没有提到这些知识点。。
    2020-01-28
    2
  • feihui
    老师,文中的“发生 GC 时,JVM 会从根对象开始,一个个地检查所有对象的引用计数。” 正确的应该是可达性分析吧
    2020-02-04
    1
  • 若镜O
    老师 有经验说 非ibm系的jvm 堆内存 xms xmx最好设置成一样 以减少内存碎片 影响gc 不知是不是靠谱说? 内存碎片说 是不是和THP有关?
    2020-02-04
  • 钱晓明
    请问文中说的程序吞吐量是什么意思?比如那个12K/秒,具体指的什么?是分配内存的调用吗?另外THP可以随时打开或关闭吗?我以为只能在系统启动时设定呢

    作者回复: 这里的吞吐量就是应用程序分派对象的速度,12K每秒,就是每秒钟能分配12K个对象。
    THP是可以动态调整的,包括打开和关闭,也包括所包含参数的微调。

    2020-01-31
  • 好吃不贵
    老师讲的非常赞,又重温了Linux的page reclaim部分。学到了好多,比如何时控制THP的开关,以及THP的缺点。习题猜测是文件系统预先读取很多小文件时有影响,比如小于4kB的文件,而通常预读有128kB,可能会造成浪费,比如大量读写磁盘,导致D状态,影响性能?不过只是猜测,希望到时候看到老师的统一习题解答:)

    作者回复: 基本靠谱。预读文件会占用Page Cache (or file cache),也浪费IO和Memory带宽;如果预读的数据没有被用到,就得不偿失了。

    2020-01-28
收起评论
5
返回
顶部