鉴于现在的生产部署都是以docker的形式进行的,因此这篇文章将生产应该具备的工具也一并打包到jdk基础docker镜像中。

最后这个镜像发布为:pugwoo/openjdk:8

0. 基础镜像和时区

基础镜像不要用jre,得用jdk,里面才带有各种jstat等工具:

FROM openjdk:8
ENV TZ='Asia/Shanghai'

该设置已经加入到pugwoo/openjdk:8

另外这个镜像是基于debian做的,可以用apt工具安装软件,先apt updateapt install 软件(一般比较慢)

1. jvm参数

打开gc日志和限制堆内存大小(Dockerfile写法):

CMD ["java", "-Xmx64m", "-verbose:gc", "-XX:+PrintGCDetails", "-XX:+PrintGCDateStamps", "-XX:+PrintGCTimeStamps", "-Xloggc:gc.log", "-jar", "/app/xxx.jar"]

说明:

  1. 如果希望gc日志输出到控制台,则把-Xloggc:gc.log这项去掉。

  2. 如果内存比较小,可以减小栈大小到512k或256k,加上-Xss512k

2. 把arthas打进去镜像里

arthas的使用说明参见官方,这里我已经把arthas放到腾讯云,加快速度,Dockerfile写法:

# add arthas
ADD https://static-1251050007.cos.ap-guangzhou.myqcloud.com/tools/arthas-bin.zip /app/arthas/arthas-bin.zip
RUN cd /app/arthas && unzip arthas-bin.zip && rm -f arthas-bin.zip

该设置已经加入到pugwoo/openjdk:8

3. jvmtop

https://github.com/patric-r/jvmtop

主要可以看线程的当前和历史CPU占比,此功能arthas还是做得不如jvmtop

4. 常用linux工具

常用的有telnet strace tcpdump lsof 等工具,这些也打包在jdk基础镜像中。

http://wsfdl.com/linux/2015/01/03/Linux%E8%B0%83%E8%AF%95%E5%88%A9%E5%99%A8.html

该设置已经加入到pugwoo/openjdk:8

5. 日志分开正常和错误日志

分开错误日志之后,就可以单独查看错误日志,比较方面,原则上错误日志都是要解决问题的,所以错误日志是一定要处理和清零的。

只需要一个logback.xml文件即可,详见admin-template查看该logback.xml文件的写法。

文档更新时间: 2020-08-23 20:43   作者:nick