websphere内存配置
在基于WebSphere Application Server的Web应用程序中,内存利用率会严重影响系统性能。 最常见的内存问题之一是内存泄漏,它会导致严重的性能下降。 从理论上讲,由于Java™具有垃圾回收(GC),因此不应在Java™中发生内存泄漏。 但是,GC仅清除不再引用的未使用对象。 因此,如果未使用但仍引用了对象,则GC不会删除该对象,这会导致JVM问题中的内存泄漏。 除了内存泄漏外,您可能遇到的其他内存问题还包括内存碎片,大对象和调优问题。 在许多情况下,这些内存问题可能导致应用程序服务器崩溃。 许多用户首先注意到应用服务器性能逐渐下降,并最终由于OutOfMemory异常而崩溃。
内存问题很难解决,因为它们有多种原因。 本文提供了识别不同内存问题的根本原因的方法及其相应的解决方案。 它还介绍了用于WebSphere Commerce V6测试中的内存问题确定方法。 WebSphere Commerce是部署在WebSphere Application Server上的最大J2EE应用程序之一。 该方法论可以在系统测试期间检测并解决WebSphere Commerce中的内存泄漏问题。
方法概述
图1显示了确定和解决内存问题的整个过程。 此图中列出了五种解决方案,以下各节将进一步说明:
- 调整最大堆
- 调整Xk / Xp
- 通过swprofiler识别
- 调整缓存大小
- 执行堆转储
图1.内存分析方法的流程图
![图1.内存分析方法的流程图](https://i-blog.csdnimg.cn/blog_migrate/2dbb9966d9795fe273d28e727a5b1a70.png)
设置详细的垃圾收集以获取用于内存监视器的WebSphere Application Server日志
要分析应用程序服务器中的内存问题,第一步是收集GC信息。 您需要一个工具来分析此信息。
设置详细GC以获得用于内存监视器的WebSphere Application Server日志
要监视JVM内存的使用,请从WebSphere Application Server获取详细的垃圾回收(GC)日志; 即WebSphere Application Server安装目录dir / profiles / default / logs / server1目录下的native_stdout.log
或native_stderr.log
。 WebSphere Application Server的缺省设置不会启用此功能,但是您可以使用以下WebSphere Application Server v6.0示例来启用它:
- 通过输入
http://hostname:port/ibm/console
来打开WebSphere Application Server管理站点。 该端口是HTTP管理端口的编号,默认情况下为9060。 输入一个ID(没有密码的任何ID)并登录。 - 选择服务器>应用程序服务器> server1> Java和进程管理>进程定义> Java虚拟机 。
- 选择“ 详细垃圾回收 ”,如图2所示。
- 单击“ 应用” ,然后单击此页面顶部的“ 保存 ”。
- 重新启动WebSphere Application Server。
图2.在WebSphere Application Server V6中启用详细GC
重新启动WebSphere Application Server之后,您会在native_stdout.log或native_stderr.log中看到详细的GC输出。
分析详细GC
有许多用于详细GC日志分析的工具,例如Tivoli®Performance Viewer,转储JVM(DMPJVM)和WebSphere的Resource Analyzer。 这些工具可以提取有用的信息,并说明JVM堆大小使用情况随时间变化的趋势。
在分析native_stdout.log或native_stderr.log之后,您应该生成包含以下信息的图表:
- 占用率(MB)