近期在进行一个项目的性能调优, 目标是支撑 1000 的并发数;
web容器:apache2+tomcat6
jvm:jdk6 linux x64
程序:status2+spring+ibatis
缓存:memcache
服务器:4颗双核cup 8G内存
由于本项目是网站项目只做展示用, 对时时性没要求, 做了几乎所有对象的缓存, memcache也在本机
测试一:
设置tomcat内存 CATALINA_OPTS="-Xms1024m -Xmx1024m -Xmn256m",然后使用apache ab 测试;
ab -c 500 -n 5000 url
使用 Jprofiler6 查看运行状况;主要看了内存, jvm线程, cpu 和 CG这几项
注:对 Jprofiler 使用不熟悉,初次使用, 有些数据记不太清了
内存:增长非常快, 主要是char[ ]非常高, 300-500M
jvm线程:运行线程(runnable) 在 460-500之间, 锁定线程(blocking)在 10 和 500左右跳动 , Net I/O 在 200左右, waiting 在几十左右
cpu:占用率最高的是 ognl 的getValue
cg:年轻代非常的频繁, 老年代几乎占满, cg非常频繁, cpu消耗80%左右
在使用ab压力的时候, 同时使用ie打开页面,不能访问,出现 502 错误, tomcat控制台频繁报(org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
)
分享到:
相关推荐
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将热点代码编译为本地...