27 | 多任务环境中的Java性能问题,怎样才能不让程序互相干扰?
庄振运
该思维导图由 AI 生成,仅供参考
你好,我是庄振运。
我们来继续学习生产实践中的案例。在生产实践中,为了降低公司运营成本,更好地利用系统容量,并提高资源使用率,我们经常会让多个应用程序,同时运行在同一台服务器上。
但是,万事有利就有弊。这几个共存的应用程序,有可能会互相影响;有时还会导致严重的性能问题。我就遇到过,几个程序同时运行,最后导致吞吐量急剧下降的情况。
所以,今天我们就来探讨,当多个 Java 应用程序共存在一个 Linux 系统上的时候,会产生哪些性能问题?我们又该怎么解决这些问题?
怎样理解多程序互相干扰?
为了更好地理解后面的性能问题,你需要先了解一下应用程序内存管理机制的背景知识。我们运行的是 Java 程序,所以先快速复习一下 Java 的 JVM 内存管理机制。
Java 程序在 Java 虚拟机 JVM 中运行,JVM 使用的内存区域称为堆。JVM 堆用于支持动态 Java 对象的分配,并且分为几个区域,称为“代”(例如新生代和老年代)。Java 对象首先在新生代中分配;当这些对象不再被需要时,它们会被称为 GC(Garbage Collection)的垃圾回收机制收集。发生 GC 时,JVM 会从根对象开始,一个个地检查所有对象的引用计数。如果对象的引用计数降为零,那就删除这个对象,并回收使用这个对象相应的存储空间。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
多个Java应用程序共存于一个Linux系统可能导致性能问题,主要涉及内存管理机制、JVM的堆内存分配、GC暂停、Linux的页面回收和页面交换机制等。实验表明,当启动第二个程序时,其吞吐量急剧下降,GC暂停时间增加,可用内存下降,CPU空闲百分比降低。这是因为操作系统在分配内存时会不断检查空闲页面列表,当可用内存不足时,会触发页面回收,导致CPU开销和大量GC暂停。解决方案包括预分配JVM的堆空间、保护JVM的堆空间不被唤出到外部存储、动态调整THP。这些设计元素协同工作,才能获得最好的效果。文章重点在分析问题产生的复杂根因,对于读者快速了解文章概览并体现文章技术特点有很好的指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》,新⼈⾸单¥59
《性能工程高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 罗辑思维老师的文笔也让想到两句诗:随风潜入夜,润物细无声。
作者回复: 赞活学活用。哈哈
2020-03-072 - 好吃不贵老师讲的非常赞,又重温了Linux的page reclaim部分。学到了好多,比如何时控制THP的开关,以及THP的缺点。习题猜测是文件系统预先读取很多小文件时有影响,比如小于4kB的文件,而通常预读有128kB,可能会造成浪费,比如大量读写磁盘,导致D状态,影响性能?不过只是猜测,希望到时候看到老师的统一习题解答:)
作者回复: 基本靠谱。预读文件会占用Page Cache (or file cache),也浪费IO和Memory带宽;如果预读的数据没有被用到,就得不偿失了。
2020-01-281 - 张翠山java应用程序运行时,发现一个现象cpu sys偏高,大约4到5,遇到这种问题。如何着手排查和优化?
作者回复: CPU sys 高一般和OS的机制相关,比如我们曾经发现THP(Transparent huge pages) 会导致CPU sys变得很高。
2020-05-04 - 若镜老师 有经验说 非ibm系的jvm 堆内存 xms xmx最好设置成一样 以减少内存碎片 影响gc 不知是不是靠谱说? 内存碎片说 是不是和THP有关?
作者回复: 这个建议:”xms xmx最好设置成一样“是有道理的,我也是这样建议的。我的理解是这个设置和THP不是直接相关的,应该是不同方面的考虑。
2020-02-04 - Joe Black请问文中说的程序吞吐量是什么意思?比如那个12K/秒,具体指的什么?是分配内存的调用吗?另外THP可以随时打开或关闭吗?我以为只能在系统启动时设定呢
作者回复: 这里的吞吐量就是应用程序分派对象的速度,12K每秒,就是每秒钟能分配12K个对象。 THP是可以动态调整的,包括打开和关闭,也包括所包含参数的微调。
2020-01-31 - 黄海峰这篇干货了,以前看过好多关于jvm调优的文章或教程都没有提到这些知识点。。2020-01-284
- 钱这篇厉害,多个应用程序在同一台机器上,由于一台机器的各种资源都是有限的,多个应用程序之间即使不会发生争抢的现象,但是也会是一种彼消此涨的使用模式,老师讲的很细致,开眼了!2020-03-11
收起评论