测试测的这么烂,调优起来自然还是有点力不从心。本来测试跟调优是放一块写的,不过后来看了一下,感觉两个东西的侧重点还是有所不同,又拆开了。调了这么久,感觉调优还是有章可循的,总结起来大概就这么一些吧(个人意见)。
可怕的IO
很多的性能问题都跟IO有关,所以一个系统拿来即便什么都没测也可以先把IO调一下。我碰到的主要有以下几个:
-
日志。刚开始测的时候很多调试日志都没关,测试数据可想而知了。所以上来记着先把文件日志(Log4j)、控制台输出都屏蔽掉(关闭掉)
-
数据库。数据库主要有几个地方可以调一下,一个是连接池大小,这个在测试前就应该配一下。具体配多大呢,应该根据测试情况看,不过有一点可以掌握——可以配的跟Tomcat(5.0)线程池一样大,原因想想就知道了;一个是建立索引,这个应该不用说了;再一个就是SQL语句优化,这个是因为在测试的时候发现数据库连接有死锁的情况,后来定位到语句问题的。这里做的基本上都是一些常见的数据库优化,至于数据库本身的一些优化,就没有涉及了。
-
连接模型。这个主要涉及传统IO跟NIO的使用,可以参考前面的一篇NIO文章。
-
Tomcat。目前使用的是5.0.28版本的,主要做的就是调了一下线程池大小。目前最新的Tomcat6.0支持NIO方式了,性能应该会有不少提高。
监控工具
所谓“工欲善其事,必先利其器”,好的工具确能起到事半工倍的作用。我用到的最多的就两个JConsole 和JProfiler 。JConsole监控系统内存变化情况,如果有内存溢出的话,垃圾回收将会呈现锯齿状。发现问题以后,使用JProfiler,在小压力(或无压力)的情况下监控对象变化,定位内存溢出原因。
JVM调优
其实不能说调优了,只是一些参数的调整。不过调好了对性能影响还是很大的。对我们的系统大概有10~20%的提高。
-
JVM启动模式。JVM有两种模式,-client和-server。配置成server模式可以得到比较好的性能。但是我尝试配置这两种方式,启动Tomcat后再用JConsole观察,感觉没有什么变化,不知道问题在哪里。
-
内存大小配置。三个比较重要的参数 -Xms:初始堆大小 -Xmx:最大堆大小 -Xmn:新生代堆大小。Xms和Xmx一般配置为一样大小,这样可以避免每次GC后跳转内存空间。关键的参数就在这个-Xmn。 从测试的情况来看,这个对性能影响比较大。因为Sun的JDK是基于分代垃圾回收的,新生代简单一点说就是存储那些用一次(或几次)就仍掉的对象,当这个空间满了以后JVM就会把当前还存活的对象,移动到年老代的空间中。所以,之前测试的时候,这个空间是按默认值配置的,在16~32m之间,由于太小,一些本该扔掉的无用对象被移动到年老代,造成年老代空间持续快速增长,因而导致频繁的年老代垃圾回收。后来当调整到128m(堆总共为512m)时,性能提升很明显,年老代的垃圾回收次数明显下降。
-
垃圾回收器的选择。回收器的选择主要是为了解决垃圾回收时的停顿问题,不同的应用对停顿时间有不同的要求因而对应不同的回收器。这块目前没有要求,但是迟早要碰到,所以了解了一些。目前的回收器主要有一下几种:串行收集器,并行收集器,并发收集器。具体差异目前我理解也有限,就不好在瞎说了。
参考资料
文章分类:Java编程
分享到:
相关推荐
3. JVM调优:JVM调优通常指对JVM进行配置,优化性能以应对特定的应用需求。常见的调优手段包括调整堆内存大小、设置垃圾回收器(GC)、调整线程堆栈大小、选择合适的垃圾回收策略和参数等。 4. JAVA并发:Java并发...
在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次...
Java性能调优 6步实现项目性能全面升级+面试高频性能问题讲解视频教程分享,性能优化的N种企业级解决方案,囊括了【数据库优化】、【Tomcat优化】、【JVM优化】、【垃圾回收】、【Netty优化】、【Nginx优化】、...
在IT行业中,Java虚拟机(JVM)是Java应用程序的核心组成部分,它负责执行字节码并管理内存。...通过深入研究和实践这个项目,可以提升我们的JVM调优能力,更好地应对生产环境中可能出现的各种性能问题。
### JVM性能调优 #### JVM概念与发展历程 Java虚拟机(JVM)是Java Virtual Machine的简称,它是一种能够执行Java字节码的虚拟机。JVM的主要作用是在不同的平台上运行Java程序,使得Java程序具备跨平台的能力。...
GC(Garbage Collection)调优和JVM调优是优化Java应用性能的关键环节,尤其是在处理大量数据或者高并发场景时显得尤为重要。 GC调优主要是对JVM的垃圾回收机制进行调整,以确保内存的有效利用和避免系统出现长时间...
### JVM实战-JVM调优案例分析与MyEclipse性能调优实战 #### 实验背景与目标 在现代软件开发过程中,提升开发效率是至关重要的环节之一。MyEclipse和Eclipse作为主流的集成开发环境(IDE),被广泛应用于Java项目的...
作者通过一个故事,讲述了如何在实际项目中遇到性能问题,并通过自己的经验总结出了性能调优的重要性。 性能调优的挑战 性能调优是一项非常复杂的技术,需要开发者具备广度和深度的技术知识。互联网时代,一个简单...
《深入理解JVM性能调优和内存模型,垃圾回收,虚拟机原理,经典视频教程》是一套详尽的教育资源,旨在帮助Java开发者深入探索Java虚拟机(JVM)的内部工作机制,提升性能优化的能力。本教程共包含110讲,内容丰富,适合...
《JVM性能调优-JVM内存整理及GC回收》是一份深入探讨Java虚拟机(JVM)优化的重要学习资料,特别适合对JAVA编程有经验的开发者。这份文档详细阐述了JVM性能调优的关键概念,包括JVM内存模型、垃圾回收(Garbage ...
6. **JVM性能调优实战**: - 分析应用程序的内存泄漏、CPU占用过高和Full GC等问题。 - 使用监控工具观察内存分配、垃圾收集和线程状态。 - 根据应用特性调整内存分配策略,如增大新生代、减少Survivor区等。 - ...
本资料"JVM 调优演示-JVM.zip"包含了一个名为"JVM-master"的项目,我们可以从以下几个方面来探讨JVM调优的相关知识点: 1. **垃圾收集器**:JVM中的垃圾收集器负责自动回收不再使用的对象所占用的内存。不同的垃圾...
### JVM工具详解与参数调优&调试技巧 #### 一、JVM工具 JVM工具是一系列用于监控、管理和诊断Java虚拟机运行状态的工具集合。这些工具可以帮助开发者更好地理解和优化Java应用程序的性能。 ##### 1. jps:虚拟机...
这些模块包括性能调优标准、Java编程性能调优、多线程性能调优、JVM性能监测及调优、设计模式调优、数据库性能调优和实战等。 在每个模块中,作者都会根据自己的经验和实践,分享自己的心得体会和经验总结,帮助...
本项目是一个基于Spring Boot框架的Java应用程序,专注于JVM性能调优与内存管理。通过深入探讨JVM的内存分配、垃圾收集、线程管理、并发控制等核心概念,项目旨在帮助开发者理解和优化Java应用程序的性能。 项目的...
在大型促销活动期间,高并发系统的性能优化至关重要,尤其是Java虚拟机(JVM)的调优,它直接影响应用程序的响应速度和稳定性。本章节主要探讨了在亿级流量电商大促场景下,如何针对JVM进行调优以提高系统性能。 ...
JVM调优是优化Java应用程序性能的关键环节,而"jvm-monitor"则提供了一种工具集来帮助开发者监控和分析JVM的状态。本文将深入探讨JVM调优的概念、方法以及如何利用"jvm-monitor"进行有效的监控。 一、JVM调优基础 ...
JVM调优和SpringBoot项目优化是提升应用性能和稳定性的关键环节。首先,我们要了解JVM(Java Virtual Machine)调优的基本概念。JVM作为Java应用程序的运行环境,其性能直接影响程序的运行效率。调优主要包括调整堆...
10. **实战案例**:书中可能会包含实际项目中的JVM调优案例,帮助读者将理论知识应用到实践中。 通过对这本书的深入学习,Java开发者可以对JVM有更深入的理解,从而编写出更高效、更稳定的代码,并具备解决复杂性能...
实战:Eclipse运行速度调优。案例分析。高性能硬件上的程序部署策略