1.  建立基础镜像

FROM centos

MAINTAINER fengjian <fengjian@senyint.com>
ENV TZ "Asia/Shanghai"
ENV TERM xterm ENV JAVA_HOME /data/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /data/tomcat
ENV CATALINA_BASE /data/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin RUN rm /etc/yum.repos.d/* -rf
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel.repo /etc/yum.repos.d/
RUN yum clean all
RUN yum -y install unzip net-tools bind-utils sysstat kde-l10n-Chinese telnet reinstall glibc-common RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL "zh_CN.UTF-8" ADD localtime /etc/
ADD jdk.tar.gz /data
ADD tomcat.tar.gz /data
ADD profile /etc
ADD 20-nproc.conf /etc/security/limits.d/
ADD limits.conf /etc/security/
RUN mkdir -p /data/webserver
RUN mkdir -p /data/logs

2. tomcat/conf/catalina.sh 添加初始堆参数

JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -server -Xms4096M -Xmx4096M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:-UseCounterDecay -XX:+AlwaysPreTouch  -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.rmi.port=18999 -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=192.168.200.10"

**其中 Djava.rmi.server.hostname= 192.168.200.10 为宿主机的IP地址。

3. 加入应用

FROM 192.168.200.10/source/tomcat8_jdk1.8_test

MAINTAINER fengjian <fengjian@senyint.com.com>

ADD webserver.tar.gz /data/webserver/

EXPOSE  

CMD ["/data/tomcat/bin/catalina.sh","run"]

4. 运行应用docker

docker run -d --name  -p :  -p : 192.168.200.10/source/gateway_test_jvm

5. 使用visualVM监控

二,

2. tomcat/conf/catalina.sh 添加初始堆参数

JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -server -Xms4096M -Xmx4096M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:-UseCounterDecay -XX:+AlwaysPreTouch  -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.rmi.port=18999 -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=192.168.20.174"

**其中 Djava.rmi.server.hostname= 192.168.20.174 为宿主机的IP地址。

部署在k8s中,使用nodePort 指定端口,端口与jmxremote.port 相同

apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: gateway
namespace: senyint
spec:
selector:
matchLabels:
app: gateway
replicas:
template:
metadata:
labels:
app: gateway
spec:
nodeName: node1 #指定部署到 node1 上
containers:
- name: gateway
image: 192.168.200.10/source/gateway_test_jvm
resources:
limits:
cpu:
memory: 8192Mi
requests:
cpu: 100m
memory: 512Mi
ports:
- name: webport
containerPort:
- name: jvmport
containerPort: ---
apiVersion: v1
kind: Service
metadata:
name: gateway
namespace: senyint
spec:
type: NodePort
ports:
- name: webport
port:
targetPort:
protocol: TCP
- name: jvmport
port:
targetPort:
protocol: TCP
nodePort:
selector:
app: gateway

或者使用标签

kubectl label nodes  node1    jvmmonitor=test

apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: gateway
namespace: senyint
spec:
selector:
matchLabels:
app: gateway
replicas:
template:
metadata:
labels:
app: gateway
spec:
nodeSelector:
jvmmonitor: test
containers:
- name: gateway
image: 192.168.200.10/source/gateway_test_jvm
resources:
limits:
cpu:
memory: 8192Mi
requests:
cpu: 100m
memory: 512Mi
ports:
- name: webport
containerPort:
- name: jvmport
containerPort: ---
apiVersion: v1
kind: Service
metadata:
name: gateway
namespace: senyint
spec:
type: NodePort
ports:
- name: webport
port:
targetPort:
protocol: TCP
- name: jvmport
port:
targetPort:
protocol: TCP
nodePort:
selector:
app: gateway

docker tomcat jvm 使用 visualVM监控的更多相关文章

  1. Docker——Tomcat JVM 内存配置

    前言 安装再docker中的tomcat,在下载大文件或者某些情况下,会出现tomcat的内存溢出等情况,所以需要配置tomcat的内存大小,docker中的tomcat内存大小配置有四种方式. 一. ...

  2. Tomcat(JVM)性能监控方法

    Tomcat(JVM)监控方法 1.Tomcat自带的监控页面 配置详见Tomcat安装配置监控一文,如图所示为监控页面: 2.LoadRunner编写脚本实现Tomcat监控 采用编写VuGen脚本 ...

  3. JVM探秘:VisualVM监控远程Java进程

    VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java ...

  4. visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优

    文/朱季谦 最近在做了一些JVM监控与调优的事情,算是第一次实践,还比较陌生,故而先把这一次经验简单记下笔记,这样,对后面学习调优方面时,不至于又想不起来了.本文档主要总结在window本地环境远程对 ...

  5. VisualVM监控远程阿里云主机

    一.前言 使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的) ...

  6. 使用jdk自带的visualVM监控远程监控was

    1.登录was控制台https://172.16.87.221:9043/ibm/console/unsecureLogon.jsp服务器--服务器类型--Java 和进程管理---进程定义---Ja ...

  7. visualvm 监控 远程 机器上的 Java 程序

    JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程 ...

  8. VisualVM监控远程主机上的JAVA应用程序

    使用VisualVM监控远程主机上JAVA应用程序时,需要开启远程主机上的远程监控访问,或者在远程JAVA应用程序启动时,开启远程监控选项,两种方法,选择其中一种就可以开启远程监控功能,配置完成后就可 ...

  9. docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞

    docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议 根本原因是 SecureRandom 这个 jre 的工具类的问题.那为什么 ...

随机推荐

  1. 基于spring boot 2.x 的 spring-cloud-admin 实践

    spring cloud admin 简介 Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 ...

  2. Redis简介及应用场景

    一丶Redis介绍 Redis是一个开源的 key—value型 单线程 数据库,支持string.list.set.zset和hash类型数据. 默认端口:6379 默认数据库数量:16 二.优点: ...

  3. Java_万年历(简单)

    1.方法,需要一个年份,一个月份.然后在控制台输出日历 // 输入一个年份和一个月份显示日历 public static void printCalendar(int year, int month) ...

  4. POJ1741(SummerTrainingDay08-G 树的点分治)

    Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 23380   Accepted: 7748 Description ...

  5. Code Signal_练习题_depositProfit

    You have deposited a specific amount of money into your bank account. Each year your balance increas ...

  6. 微信公众号本地断点调试(frp反向代理或Remote Debugger)

    问题描述: 需要开发微信授权和订阅推送,但是感觉调试不方便,就试着几种方式.因为是用的C#开发,Visual Studio工具自带配套的远程工具 (Remote Debugger).但是感觉不稳定,容 ...

  7. 回调地狱以及用promise怎么解决回调地狱

    哈哈哈,我又又又回来了,不好意思,最近枸杞喝的比较到位,精力比较旺盛. 现在我们来聊一聊啥是回调地狱,注意是回调地狱啊   不是RB人民最爱拍的那啥地狱啊,来吧,上车吧少年,这是去幼儿园的车 都让开, ...

  8. css3 content 特殊字符和符号

    基本形状 ▲ 9650 25B2 ► 9658 25BA ► 9658 25BA ▼ 9660 25BC◄ 9668 25C4 ❤ 10084 2764 ✈ 9992 2708 ★ 9733 2605 ...

  9. JavaSE——序列化和反序列化

    序列化: 序列化对应写的操作.(读与写都是站在应用的角度上) 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间 ...

  10. LeetCode 题解之Most Common Word

    1.题目描述 2.题目分析 首先将输入句子拆分成单词,在这个过程中将所有大写字母变换成小写字母,将每一个单词作为一个字符串放入一个 map<string,int> 容器中,最后遍历容器,查 ...