docker 查看 JVM 状态

查看 docker 进程,获取containerid

docker ps

在这里插入图片描述

进入容器

docker exec -it containerid /bin/bash

有时候直接用上述命令会有以下错误出现,,这个错误说明,该镜像不包含bash的风格操作,没有这样的文件或目录,可能你的镜像基于busybox,他没有bash shell,但他在/bin/sh 有一个shell,可以使用以下命令调用

OCI runtime exec failed: exec failed: container_linux.go:337: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown

docker exec -ti containerid /bin/sh

查看 JVM 信息

  • jstack 查看线程堆栈信息
  • jmap 导出内存堆栈信息
  • jstat 统计gc 回收信息
  • jinfo 统计gc 回收信息
    这里可能会出现pid 为1导致openjdk 为8时打印不了堆栈信息,我将dockerfile 的openjdk改为11 后可以,但网上有其他方式解决,详情看:http://www.likecs.com/show-46716.html
    报错信息:Unable to get pid of LinuxThreads manager thread
    在这里插入图片描述

jstack 查看线程堆栈信息示例

jstack app 或者查看下pid 文件上的pid值
在这里插入图片描述
使用docker cp 将导出的文件复制到宿主机当前目录

# 其中 3a9a6bd0f396 为容器 containerid
docker cp 3a9a6bd0f396:1654.txt 1564.txt
可以通过设置JAVA_OPTS环境变量来指定Tomcat的最大线程数。具体步骤如下: 1. 首先创建一个Dockerfile文件,在文件中指定基础镜像为Tomcat。 2. 在Dockerfile文件中添加以下命令,设置JAVA_OPTS环境变量: ``` ENV JAVA_OPTS="-Xmx512m -Xms256m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/logs/heap-dump.hprof -XX:ErrorFile=/usr/local/tomcat/logs/hs_err_pid%p.log -Djavax.net.ssl.trustStore=/usr/local/tomcat/conf/cacerts" ``` 其中,-Xmx和-Xms参数用于指定JVM的最大内存和初始内存,-Djava.awt.headless=true用于启用无头模式,-Dfile.encoding=UTF-8用于指定文件编码为UTF-8,-server用于启用服务器模式,-XX:+UseG1GC用于启用G1垃圾回收器,-XX:MaxGCPauseMillis=100用于指定最大垃圾回收时间,-XX:+HeapDumpOnOutOfMemoryError用于在发生内存溢出时生成堆转储文件,-XX:HeapDumpPath用于指定堆转储文件的路径,-XX:ErrorFile用于指定错误日志文件的路径,-Djavax.net.ssl.trustStore用于指定SSL证书的信任库路径。 3. 在Dockerfile文件中添加以下命令,将war包复制到Tomcat的webapps目录下: ``` COPY myapp.war /usr/local/tomcat/webapps/ ``` 其中,myapp.war为你的应用程序的war包。 4. 最后,在Dockerfile文件中添加以下命令,启动Tomcat: ``` CMD ["catalina.sh", "run"] ``` 完整的Dockerfile文件如下: ``` FROM tomcat:latest ENV JAVA_OPTS="-Xmx512m -Xms256m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/logs/heap-dump.hprof -XX:ErrorFile=/usr/local/tomcat/logs/hs_err_pid%p.log -Djavax.net.ssl.trustStore=/usr/local/tomcat/conf/cacerts" COPY myapp.war /usr/local/tomcat/webapps/ CMD ["catalina.sh", "run"] ``` 你可以根据自己的需求修改JAVA_OPTS环境变量中的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值