测试二:
设置tomcat内存 CATALINA_OPTS="-Xms3000m -Xmx3000m -Xmn768m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=70",然后使用apache ab 测试;
ab -c 1000 -n 10000 url
同样使用 Jprofiler6 查看运行状况;主要看了 jvm线程, cup 和 CG
jvm线程:运行线程(runnable) 在 10以下, 锁定线程(blocking)在 1000左右 , Net I/O 在 300-500左右, waiting 在几十左右
cpu:占用率最高的是 ognl 的getValue
cg:年轻代同样非常的频繁, 由于增加了内存, 调整了gc参数,老年代在70%的时候gc, 没有出现占满的情况对老年的gc减少很多,gc的 cpu消耗20%-30%左右
在使用ab压力的时候, 同时使用ie打开页面,速度稍慢一点,但在5-10秒内可以正常访问页面, tomcat控制台只出现过一次
(org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
)
总结:
经过上诉两次测试, 发现加大内存后老年代gc次数减少,占有cpu资源明显减少, tomcat 的效率提升非常的明显, 轻松应对了1000的并发测试, tomcat和web程序都是使用jvm, 看来不仅是web程序对内存有需求, 还得考虑 tomcat 自身对内存的需求。有不对的地方欢迎大家指出
疑惑:
对于tomcat线程有点疑惑, 加大内存后,运行线程怎么会一下这么少了呢, 锁定线程猛增; 在Jprofiler thread views 中找了个线程来查看状态, 发现首先是运行状态, 然后进入锁定状态, 会在锁定状态保持很久, 然后又可能变为运行状态, 或等待状态, 直到消亡,对tomcat的线程处理没研究过不熟悉, 对两次测试的 Jprofiler 的vm线程数据差别这么大, 没能理解, 在完成对高并发的支持 运行线程反而会减少。。。
分享到:
相关推荐
4. **GC参数调整**:如`-XX:+UseConcMarkSweepGC`启用CMS,`-XX:CMSInitiatingOccupancyFraction`定义CMS触发阈值,`-XX:+UseG1GC`启用G1。还需要关注`-XX:MaxGCPauseMillis`设定最大垃圾收集停顿时间目标。 5. **...
通过代码优化和调整JVM参数相结合,达到最佳性能。 8. **并行与并发优化**:理解synchronized、volatile、CAS(Compare and Swap)等并发原语,以及如何使用Lock接口和并发集合类提高并发性能。 9. **编译优化**:...
本文将深入探讨JVM参数的设置方法,并结合实例"jvmSample-master"进行分析。 一、JVM概述 1. 类加载机制:JVM通过类加载器将字节码加载到内存中,分为启动类加载器、扩展类加载器和应用程序类加载器。 2. 内存...
《JVM性能调优:深入理解JVM内存模型与优化》 在Java开发中,JVM(Java Virtual Machine)性能调优...通过合理配置JVM参数,结合使用各种监控和诊断工具,我们可以有效地发现和修复性能问题,让应用程序运行更加顺畅。
**: 显示帮助信息,介绍可用的所有JVM参数。 - 示例:`-help` 3. **-fullversion**: 输出JVM的完整版本信息。 - 示例:`-fullversion` 4. **-showversion**: 显示JVM的版本信息。 - 示例:`-showversion` 5. *...
- 垃圾收集参数调整,例如设置新生代和老年代的比例,以优化不同应用的内存需求。 - 栈帧优化,如逃逸分析,帮助确定对象是否需要在堆上分配。 6. **JVM调优工具**: - JConsole和VisualVM提供可视化的监控和...
在Java性能调优中,JVM...通过合理的设计、优化策略以及JVM参数配置,可以显著提升应用的运行效率和内存管理效果。在实际工作中,应结合监控工具(如VisualVM、JProfiler等)持续分析和调整,以达到最佳的性能状态。
在深入理解JVM的工作机制后,我们可以更好地调整和优化应用程序,提升系统的性能和稳定性。 一、JVM结构与原理 1. **类装载子系统**:负责加载、验证、准备和初始化.class文件,确保类的正确性。 2. **运行时数据...
在面临`OutOfMemoryError`时,通常需要关注以下几个方面进行JVM参数调整: 1. **新生代**:新生代的Eden和Survivor区一般不会引发`OutOfMemoryError`,因为垃圾收集频繁进行。但是,如果对象频繁晋升至老生代,可能...
### JVM参数设置详解 在Java应用开发与维护过程中,JVM(Java虚拟机)的配置至关重要,它直接影响到应用程序的性能表现与稳定性。本文将基于提供的文件内容,深入解析Linux环境下JVM的基本参数设置方法及原理。 ##...
根据JVM参数的设置,堆可以被划分为新生代和老年代,新生代又进一步细分为Eden区和两个Survivor区。5、方法区:也称为永久代,存储类的信息、常量、静态变量等,JDK 8之后被元空间(Metaspace)取代,元空间使用的是...
### JAVA-JVM参数详解 #### 一、JPS:查看正在运行的 Java 进程 - **概述**:`jps`(Java Process Status Tool)是JDK自带的一个实用工具,用于显示当前计算机上所有正在运行的Java应用程序的进程ID(PID)及其...
- 参数调整:通过JVM启动参数设置堆大小(-Xms, -Xmx)、新生代与老年代比例(-XX:NewRatio)、存活对象阈值(-XX:SurvivorRatio)等。 - 垃圾回收日志分析:通过`-XX:+PrintGCDetails`等参数记录GC信息,辅助调优...
5. **JVM参数配置**:为了优化JVM的行为,开发者可以设置各种参数,如-Xms和-Xmx设定堆内存初始大小和最大大小,-Xss设定栈内存大小,-XX:+UseConcMarkSweepGC选择特定的垃圾收集器等。这些参数对于调整JVM性能至关...
总结起来,深入理解JVM内核,熟练掌握诊断技巧,并合理调整JVM配置参数,是每一个Java开发者必备的技能。通过本教程的学习,你将能够运用这些知识有效地提升应用性能,解决实际工作中的各种挑战。
在Spark中,每个任务都是在一个JVM实例中运行的。因此,JVM的性能直接影响到Spark的整体表现。通过合理配置JVM,可以显著提升Spark的执行速度和资源利用率,从而降低整体的成本。 #### JVM优化技巧 1. **内存管理*...
可以通过调整JVM参数`-Xms`和`-Xmx`来增加堆内存的初始值和最大值。例如,设置`-Xms2048m -Xmx2048m`可以将堆内存的最小和最大值都设置为2GB。 - **JVM默认堆内存配置**:JVM默认情况下,最小堆内存为物理内存的1...
- 参数调整:如-Xms、-Xmx设置堆大小,-XX:MaxPermSize设置方法区大小。 - 类加载优化:合理设计类结构,减少类的加载次数。 - 内存优化:控制对象创建,减少内存碎片。 - JIT编译:利用JIT将热点代码编译为本地...