JVM性能调优实践――JVM篇
在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇 JVM性能调优实践――性能指标分析 。 JVM的调优和故障处理可以使用JDK的几个常用命令工具。因为本文是基于Docker容器内部的Springboot服务。需要调整一下docker容器的启动参数,才可以使用jmap等工具。jmap命令需要使用Linux的Capability的PTRACE_ATTACH权限。而Docker自1.10在默认的seccomp配置文件中禁用了PTRACE_ATTACH。目前使用的Docker version是17.04.0-ce。支持的Capability列表可以详看 runtime-privilege-and-linux-capabilities 。 调整Capability的方式也比较方便。可以如下直接在运行参数后面加 cap_add,cap-drop $docker run --cap-add=ALL --cap-drop=MKNOD ... 也可以在compose中增加: cap_add: - ALL cap_drop: - NET_ADMIN - SYS_ADMIN 在排查问题时,一般是先通过 JVM性能调优实践――性能指标分析 中的几个命令来分析基础的服务器状态和信息