高级性能调优概念
2009-07-11 08:32:32 来源:WEB开发网对于启用详细垃圾收集日志记录,糟糕的方面是不同厂商采用的文件格式不一致,甚至在同一厂商提供的不同版本之间也可能不一致。例如,IBM 的 Java Runtime Environment (JRE) 6.0 采用详细的 Extensible Markup Language (XML) 文件格式。而 Sun Microsystems 的 HotSpot JVM 使用简明的单行格式,有时候需要启用更多命令行参数,才能得到所需的信息。
了解垃圾收集数据的意义
启用垃圾收集器的日志记录之后,在正常负载下运行应用程序。然后,研究垃圾收集日志。可以看到堆的大小从最初的分配开始增长,最终稳定在某一范围内。然后,可以使用这个范围内的某个值作为堆的初始大小,这会消除堆增长到稳定状态导致的初始延迟。
垃圾收集日志还会指出发生垃圾收集的时间以及垃圾收集花费的时间。如果发现垃圾收集的运行时间太长,可以考虑让 JVM 使用另一种垃圾收集算法(具体细节取决于 JVM 的版本和厂商)。根据这些时间戳,还可以计算出系统在垃圾收集方面花费的时间百分比,可以用这个指标比较各种 JVM 设置。
如果发现堆不断增长和收缩,可以修改 MinHeapFree 和 MaxHeapFree 值,JVM 使用它们决定什么时候扩展或收缩堆。
随着 JVM 的发展,与垃圾收集相关的性能也会变化。一定要通过您的 JVM 手册了解当前的调优参数。
调优的优先次序
对于在为 WebSphere Application Server 调整 UNIX 服务器时应该检查哪些方面,IBM 给出了一些建议。
首先,确保服务器具有所需的资源:CPU、磁盘、内存和网络。这些是最基本的。
接下来,了解应用程序的垃圾收集需求并相应地调整 JVM。这可能需要回到前一步,确保具有按所需方式运行应用程序的足够内存。
确保适当地设置应用服务器队列,让应用服务器只处理它能够处理的请求。当 Web 服务器把请求交给应用服务器时,它会进入一个队列。如果允许太多的连接连接到应用程序,每个用户都会体验到糟糕的性能。因此,过剩的连接应该在 Web 服务器上排队,而不要在 WebSphere Application Server 上排队。
最后,可以使用多种缓存技术,比如数据库中的预备语句、Enterprise JavaBean (EJB) 技术和线程缓存。如果不断清理缓存,从而为新内容让出空间,就应该考虑增加缓存大小。
结束语
计算机的资源分为 CPU、磁盘、内存和网络。调优工作应该度量这些资源,然后在应用程序、应用服务器和服务器中做相应的调整,确保不出现资源争用。
JVM 管理自己的堆并通过垃圾收集过程清理堆。这方面的调优包括确保堆可以增长到应用程序需要的大小,以及通过调整垃圾收集参数避免垃圾收集的影响过大。
进行垃圾收集调优的主要工具是详细垃圾收集日志记录,这会记录每个垃圾收集活动。可以通过日志了解垃圾收集花费的时间以及执行收集的原因。
更多精彩
赞助商链接