采集MRS集群服务堆栈信息
当集群服务出现卡顿、响应缓慢或内存泄漏等问题时,集群管理员可在Manager中采集服务堆栈信息用于问题定位。堆栈信息是JVM(Java Virtual Machine,Java虚拟机)运行时的状态快照,通过分析堆栈信息可以定位线程阻塞、内存溢出等问题的根因。Manager支持采集指定角色或实例的堆栈信息,保存到本地目录并支持下载。
相关概念
采集内容包括以下类型,各类型的适用场景如下:
- jstack栈信息:jstack是JDK提供的线程栈转储工具,用于生成JVM中所有线程的当前状态快照。适用于定位线程死锁、线程阻塞、CPU使用率过高等线程级别的问题。
- jmap -histo堆统计信息:jmap是JDK提供的内存映射工具,-histo参数用于统计JVM堆内存中各类对象的数量和大小。适用于定位内存使用异常、对象数量过多等内存级别的问题。
- jmap -dump堆信息快照:使用jmap的-dump参数生成JVM堆内存的完整快照文件,可用于离线分析内存对象引用关系和内存泄漏。适用于需要深入分析内存泄漏场景。
对于jstack和jmap -histo信息,支持连续采集以便对比不同时间点的变化趋势。
约束与限制
- 本章节操作仅支持MRS 3.x及之后的版本。
- 使用jmap -dump采集堆信息快照时,JVM会触发Full GC(全量垃圾回收),可能导致服务异常,建议在业务高峰期请谨慎使用。
采集堆栈信息
- 登录MRS集群Manager界面。
登录集群Manager界面请参考访问MRS集群Manager。
- 选择“集群 > 服务 > 待收集服务的名称”。
- 选择“更多 > 采集堆栈”。
- 采集多个实例的堆栈信息:进入实例列表,勾选要采集的实例名称,选择“更多 > 采集堆栈”。
- 采集单个实例的堆栈信息:单击要采集的实例,选择“更多 > 采集堆栈”。
- 根据界面提示,在弹框中选择需要采集的角色,采集内容,配置高级选项(若无特殊需求,保持默认配置即可),单击“确定”。 图1 采集堆栈
- 采集成功后,单击“下载”。
采集完成后,在Manager界面查看采集状态是否显示成功。确认能正常下载堆栈文件,并检查文件内容是否包含有效的堆栈信息。
下载堆栈信息
- 选择“集群 > 待操作集群的名称 > 服务 > 待操作服务的名称”。选择右上角“更多 > 下载堆栈信息”。
- 选择需要下载的角色和内容,单击“下载”,可直接下载相关堆栈信息到本地。 图2 下载堆栈信息
清理堆栈信息
清理堆栈信息将删除已采集的堆栈文件,清理后无法恢复。请在确认已完成下载和分析后再执行清理操作。建议在清理前备份重要的堆栈文件。
- 选择“集群 > 服务 > 待操作服务的名称”。
- 选择右上角“更多 > 清理堆栈信息”。
- 选择需要清理的角色和内容,并配置“文件目录”(设置需要清理的堆栈文件所在目录路径,清理操作将删除该目录下的所有堆栈文件)。单击“确定”执行清理操作。 图3 清理堆栈信息
清理完成后,在Manager界面查看堆栈信息列表是否已清空。确认本地已下载的堆栈文件是否已完成备份或分析。
相关文档
- 如需了解MRS集群Manager界面的访问方式,请参考访问MRS集群Manager。
- 如需查看集群告警信息以关联分析堆栈问题,请参考查看MRS集群告警。
- 如需了解JVM调优和内存分析的方法,请参考各组件的相关调优指导说明。
- 常见问题:
堆栈文件占用磁盘空间较大怎么办?
建议定期清理已分析完成的堆栈文件,避免占用过多磁盘空间。jmap -dump生成的堆信息快照文件通常较大(与JVM堆大小相当),请确保磁盘有足够的可用空间。