这个是目前公司某高并发应用生产环境的JVM启动参数,该应用日pv近亿。
一、先看一下生产环境的Java版本:
java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
二、JVM参数如下(将应用名以xxxxx代替):
java -Xms4g -Xmx4g -Xmn3g -Xss256k -server -XX:PermSize=64M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:+UseAdaptiveSizePolicy -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseCMSCompactAtFullCollection -XX:+DisableExplicitGC -XX:CMSFullGCsBeforeCompaction=10 -XX:CMSMaxAbortablePrecleanTime=5 -XX:+HeapDumpOnOutOfMemoryError -jar xxxxx.jar
三、部分参数解析:
由于原先写过一篇《JVM分代、垃圾回收概念与一个JVM参数调优示例》,那个应用(同样高并发)的JVM参数和这个基本相同,因此,这里就直接略过一些常见参数,只对一些关键参数重新做一下说明。
-server:
启用-server时新生代默认采用并行收集,其他情况下,默认不启用。-server策略为:新生代使用并行清除,年老代使用单线程Mark-Sweep-Compact的垃圾收集器。
-XX:+UseConcMarkSweepGC:
设置年老代为并发收集。
-XX:+UseAdaptiveSizePolicy:
上文中,因启用-server模式,所以新生代使用并行收集器。
设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,建议使用并行收集器时一直打开。
-XX:+CMSClassUnloadingEnabled:
年老代启用CMS,但默认是不会回收永久代(Perm)的。此处对Perm区启用类回收,防止Perm区内存满。(需要与+CMSPermGenSweepingEnabled同时启用)。
-XX:+CMSPermGenSweepingEnabled:
同上,为了避免Perm区满引起的Full GC,开启并发收集器回收Perm区选项。
-XX:+UseCMSCompactAtFullCollection:
年老代使用CMS,默认是不会整理堆碎片的。设置此配置打开对年老代的压缩,即执行Full GC后对内存进行整理压缩,免得产生内存碎片,但有可能会影响性能。
-XX:CMSFullGCsBeforeCompaction=10:
接上文,因为过于频繁的在Full GC后进行碎片整理会影响性能,因此,设置执行10次Full GC后做一次碎片整理。
-XX:CMSMaxAbortablePrecleanTime=5:
指定CMS-concurrent-abortable-preclean阶段执行的时间,该阶段主要是执行一些预清理,减少应用暂停的时间。但在JDK 5.0+、6.0+的版本中有可能会由于JDK的bug29导致CMS在remark完毕后很久才触发sweeping动作。通过设置-XX: CMSMaxAbortablePrecleanTime=5(单位为ms)来避免。
PS:
关于CMS(Concurrent Mark-Sweep):并发垃圾收集器,以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器,适用于要求服务器响应速度的应用。标记-清除、垃圾回收都是多线程,应用只暂停很少时间。
关于并行垃圾收集器:标记-清除为单线程,回收仍为多个线程并发执行。应用暂停时间较长(相对于并发垃圾回收器)。
相关推荐
总之,大促高并发系统下的JVM调优是一项复杂而细致的工作,涉及到服务器配置、Tomcat优化和JVM参数调整等多个层面。通过精心的调优,可以显著提高系统在高并发环境下的处理能力和稳定性,确保大促期间的服务质量。
以下是对JVM部分关键配置参数的详细解析,这些参数能够帮助我们优化应用程序的执行效率,管理内存,以及进行性能调优。 #### 执行模式配置 1. **-Xmixed**: 混合模式执行(默认)。此参数指示JVM使用混合模式执行...
对于使用Tomcat的应用,可以通过修改其配置文件来进行JVM的优化。以`catalina.sh`(Linux系统)或`catalina.bat`(Windows系统)为例,可以在文件中添加如下配置: ```sh JAVA_OPTS="$JAVA_OPTS -server -Xms2048m ...
通过设置合适的最大线程数、初始线程数和线程增长数,可以保证应用服务器在高并发情况下依然能够平稳运行,避免因线程资源耗尽而导致服务不可用。 在对项目中的JDBC配置进行修改时,需要将原有的数据库连接池配置改...
Java虚拟机(JVM)是Java程序运行的基础,它的调优对于提高应用程序的性能至关重要,尤其是在高并发、大数据量的场景下。Tomcat作为流行的Java应用服务器,其性能优化也与JVM设置紧密相关。本篇文章将深入探讨JVM...
性能调优对于确保应用高效运行至关重要,尤其是对于处理高并发和大数据量的应用来说。本文将深入探讨“WAS性能调优对jvm、线程数、ORB大小的配置”这一主题。 首先,我们要理解JVM(Java Virtual Machine)在WAS中...
9. **JVM参数调优**:掌握常用JVM启动参数,如-Xms、-Xmx、-XX:NewRatio、-XX:SurvivorRatio等,以及如何根据系统需求进行参数调整。 10. **实战演练**:通过实际案例,如Web服务器负载测试、大数据处理场景等,...
这是一个非常实用的工具,能够帮助快速地进行JVM参数配置。 3. **JVM调优“标准参数”的陷阱**:R大的文章详细介绍了在不同JDK版本下JVM调优过程中可能遇到的一些陷阱。尽管该文章最初是在JDK 6时撰写的,但是其中...
4. **JVM启动参数设置**: - `-Xms` 和 `-Xmx` 分别设置堆的初始大小和最大大小。 - `-XX:NewRatio` 设定新生代与老年代的比例。 - `-XX:SurvivorRatio` 设置新生代中Eden区与Survivor区的比例。 - `-XX:...
《Java高并发编程与JVM性能调优实战》是一门深度探讨Java开发中高并发处理和JVM优化的视频教程。课程旨在帮助开发者提升在大规模并发环境下的编程能力,同时掌握JVM性能优化技巧,以实现更高效、稳定的Java应用程序...
2. **监控和测试**:使用如JVisualVM等工具监控应用程序的运行状态,并通过多次测试来确定最佳参数配置。 3. **参考官方文档**:Oracle提供的官方文档包含了详细的JVM参数解释和推荐配置,是获取专业建议的重要资源...
如果应用程序处理大量数据或有高并发请求,那么增加这个值可以显著提升程序的稳定性。 #### 四、参数设置的最佳实践 - **根据实际需求调整参数**:不同应用场景下,对内存的需求也不同。例如,对于一个简单的Web...
然而,在高并发或大数据量处理的应用场景下,Tomcat可能会出现内存溢出等问题。为了提升Tomcat的稳定性和性能,合理地设置其启动参数变得尤为重要。 #### 二、内存参数设置 ##### 2.1 内存参数的作用 内存参数主要...
1. 合理配置JVM启动参数:包括堆内存大小、新生代与老年代的比例、垃圾收集器的选择等。 2. 优化代码逻辑:对于频繁执行的代码,通过算法优化、数据结构优化等方式提升效率。 3. 使用性能分析工具:定期使用...
针对不同的并发量和服务器内存,我们需要调整JVM启动参数来优化内存分配。 1. **标准参数**(-):所有JVM实现都必须支持,如`-server`选择服务器模式运行JVM。 2. **非标准参数**(-X):如`-Xms`设置初始堆大小,...
Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 区别 Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 是 Java ...因此,合理地配置 JVM 的内存参数是非常重要的,可以避免内存溢出错误和提高应用的性能。
- 对于高并发、大数据量的场景,可能需要调整锁的并发级别(-XX:UnlockDiagnosticVMOptions -XX:NumberOfStripedLocks)或使用偏向锁(-XX:+UseBiasedLocking)。 8. **资源限制** - **CPU和内存限制**:在容器化环境...
标题 "ECLIPSE,TOMCAT,JVM内存设置" 涉及到的是在开发Java Web应用程序时,如何配置Eclipse集成开发环境(IDE)、Apache Tomcat服务器以及Java虚拟机(JVM)的内存参数,以优化性能和避免内存溢出等问题。...
类数据共享(Class Data Sharing,CDS)可以减少启动时间和内存占用,通过预先打包的类数据归档文件,多个JVM实例可以共享相同的类信息。 总之,JVM性能优化是一个涵盖广泛且深度丰富的主题,涉及内存管理、垃圾...