一、問題分析
使用docker容器起服務,容器是基於openjdk:8-jre-alpine的,里面沒有沒有相關的內存分析工具,如jmap,jstack等
解決參考文檔:
https://www.codeleading.com/article/40862545024/
二、問題解決
2.1、容器安裝openjdk8
#進入容器 [root@ZSC ~]#docker exec -it 931c5b99fa53 /bin/sh #修改源,加入阿里源 / # cat /etc/apk/repositories http://dl-cdn.alpinelinux.org/alpine/v3.9/main http://dl-cdn.alpinelinux.org/alpine/v3.9/community http://mirrors.aliyun.com/alpine/v3.9/main/ http://mirrors.aliyun.com/alpine/v3.9/community/ #更新 / # apk update fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz fetch http://mirrors.aliyun.com/alpine/v3.9/main/x86_64/APKINDEX.tar.gz fetch http://mirrors.aliyun.com/alpine/v3.9/community/x86_64/APKINDEX.tar.gz v3.9.6-44-g3992359a2b [http://dl-cdn.alpinelinux.org/alpine/v3.9/main] v3.9.6-45-g39af6011bf [http://dl-cdn.alpinelinux.org/alpine/v3.9/community] v3.9.6-44-g3992359a2b [http://mirrors.aliyun.com/alpine/v3.9/main/] v3.9.6-42-g88b6599af0 [http://mirrors.aliyun.com/alpine/v3.9/community/] OK: 9790 distinct packages available #安裝openjdk8(很慢) / # apk add openjdk8 #查看安裝的位置,后續可以考慮將其移出容器 /usr/lib/jvm/java-1.8-openjdk # pwd /usr/lib/jvm/java-1.8-openjdk /usr/lib/jvm/java-1.8-openjdk # ls ASSEMBLY_EXCEPTION LICENSE THIRD_PARTY_README bin include jre lib release
2.2、pid問題解決
由於進程占用pid為1,所以無法使用jmap等工具
解決方法:
1)docker --init啟動
#可以將openjdk拷貝出來,然后容器啟動后,拷貝進容器 [root@ZSC ~]#docker run --init -d -p 20889:20889 dianchou-service-address:1.0-SNAPSHOT 72bca3bb7bd222b782eff7eec426818dbf3482685adb22c48f06aaf69bd1525b [root@ZSC service]#docker cp java-1.8-openjdk 72bca3bb7bd2:/
2)docker-compose配置文件添加參數