精华内容
下载资源
问答
  • 3 此时启动Tomcat就可以访问,如果不行,那就是端口未开放,如下操作开放端口,我的机器是本地的虚拟机Centos7, 云服务器可能还需要去管理后台开放端口 firewall-cmd --zone=public --add-port=60001/tcp --...

    JMX连接 

    一 JConsole  配置

    1  将以下配置加入catalina.sh  

    2  JConsole  不需要访问用户和密码,下图中的用户名和口令,是连接远程服务器的账号和密码

    if [ "$1" = "start" ];then
            echo "set console";
    
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=60001 ";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=60002";
            JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.50.128";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false";
    
    else
            echo "no startup";
    fi;

    3 此时启动Tomcat就可以访问,如果不行,那就是端口未开放,如下操作开放端口,我的机器是本地的虚拟机Centos7, 云服务器可能还需要去管理后台开放端口

    firewall-cmd --zone=public --add-port=60001/tcp --permanent
    firewall-cmd --zone=public --add-port=60002/ctp --permanent
    firewall-cmd --reload

     

     二  VisualVM  配置

    1 不需要访问控制的配置同上,需要访问控制的配置如下

    if [ "$1" = "start" ];then
            echo "set console";
    
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=60001 ";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=60002";
            JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.50.128";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password";
            JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access";
    else
            echo "no startup";
    fi;

    2 进入Tomcat conf目录

    cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password
    cp $JAVA_HOME/jre/lib/management/jmxremote.access jmxremote.access
    
    

    3 修改 jmxremote.access
    monitorRole readonly
    controlRole readwrite


    4 修改 jmxremote.password ,下面的格式为: 用户名 密码
    monitorRole tomcat
    controlRole tomcat

     

    5 修改权限,如果不修改启动Tomcat的时候会有报错提示

    chmod 600 jmxremote.access
    chmod 600 jmxremote.password

     

    Jstatd连接 

    1. cd $JAVA_HOME/bin  创建 jstatd.all.policy 加入以下内容

    grant codebase "file:${java.home}/../lib/tools.jar" {
        permission java.security.AllPermission;
    };

     

    2 启动 jstatd, 以下各种方式都可以

    nohup ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.50.128 &
    
    ./jstatd -J-Djava.security.policy=jstatd.all.policy
    
    ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.50.128 -p 1099 -J-Djava.rmi.server.logCalls=true

    启动服务之后就可以使用VisualVM  连接jstatd了, 这种是不考虑防火墙的使用方式

     

    3 跨防火墙连接

    使用增强的ejstatd

    https://github.com/anthony-o/ejstatd

    编译 mvn package

    运行1: 

    • mvn exec:java -Dexec.args="-pr2222 -ph2223 -pv2224" 

    or

    运行2: 

    • java -cp "target\ejstatd-1.0.0.jar;%JAVA_HOME%\lib\tools.jar" com.github.anthony_o.ejstatd.EJstatd -pr2222 -ph2223 -pv2224 on Windows, if JAVA_HOME is set as an environment variable
    • java -cp "target/ejstatd-1.0.0.jar:$JAVA_HOME/lib/tools.jar" com.github.anthony_o.ejstatd.EJstatd -pr2222 -ph2223 -pv2224 on Unix (using Bash), if JAVA_HOME is set as an environment variable

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • jvm tomca调优实战经验记录 Tomcat 调优 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。        QPS(TPS):每秒钟request/事务 数量  &...

    jvm tomcat调优实战经验记录

    Tomcat 调优

    一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
           QPS(TPS):每秒钟request/事务 数量
           并发数: 系统同时处理的request/事务数
           响应时间: 一般取平均响应时间
           QPS(TPS) = 并发数 / 平均响应时间
           例如:这里设置的jvm的maxThread是20

    在这里插入图片描述
           那对应的TPS = 20 / 0.2 = 100

    在这里插入图片描述
           在nacos中的tomcat线程设置调优
           server.tomcat.max-threads = 50
           server.tomcat.max-connections = 100
           server.tomcat.accept-count = 100

    jvm具体参数详解

    acceptCount : 最大等待数
           即当所有的请求处理线程都在使用时,所能接受的连接的队列的最大长度。当队列已满时,所有的连接请求都会被拒接,默认为100;
           详细的说就是当调用HTTP请求数打到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat就会将该请求放入等待队列中,
           这个acceptCount就是指能够接受的最大等待数,默认为100。如果等待队列满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)

    maxThreads:最大线程数
           每次一HTTP请求到达时,tomcat都会创建一个线程来处理该请求,所以最大线程数决定了服务器容器可以同时处理多少个请求。
           maxThreads默认为200,建议增加,但是增加更多的线程就意味着带来更多的内存消耗,也带来了更多的线程上下文切换成本。
           jvm中在默认情况下会在创建线程时分配1M的线程栈。

    maxConnections:最大连接数
           指在同一时间,tomcat能够接受的最大连接数,在java新的NIO模式中,默认值为10000,当连接数到达最大值maxConnections后,系统会继续接受连接,但不会超过acceptCount的值

    maxConnections、maxThreads、acceptCount关系

           用一个形象的比喻,通俗易懂的解释一下tomcat的最大线程数(maxThreads)、最大等待数(acceptCount)和最大连接数(maxConnections)三者之间的关系。我们可以把tomcat比做一个火锅店,流程是取号、入座、叫服务员,可以做一下三个形象的类比:

    (1)acceptCount 最大等待数

           可以类比为火锅店的排号处能够容纳排号的最大数量;排号的数量不是无限制的,火锅店的排号到了一定数据量之后,服务往往会说:已经客满。

    (2)maxConnections 最大连接数

           可以类比为火锅店的大堂的餐桌数量,也就是可以就餐的桌数。如果所有的桌子都已经坐满,则表示餐厅已满,已经达到了服务的数量上线,不能再有顾客进入餐厅了。

    (3)maxThreads:最大线程数

           可以类比为厨师的个数。每一个厨师,在同一时刻,只能给一张餐桌炒菜,就像极了JVM中的一条线程。

    展开全文
  • tomcatjvm的关系分析

    2021-03-13 04:59:19
    什么是jvm我们从操作系统的层面来理解,jvm其实就是操作系统中的一个进程。既然是一个进程,那么我们很容易的可以通过任务管理器来查看。假设此时我们启动myeclipse(myeclipse其实就是用java语言编写的一个软件,他...

    首先,我们来看几个概念:

    1.什么是jvm

    我们从操作系统的层面来理解,jvm其实就是操作系统中的一个进程。既然是一个进程,那么我们很容易的可以通过任务管理器来查看。假设此时我们启动myeclipse(myeclipse其实就是用java语言编写的一个软件,他的运行必然会启动一个jvm,我们可以把myeclipse理解成我们自己写的一个简单的java版的helloworld程序)。查看任务管理器的截图如下:

    c4f1ed6de1aa7ad295007615e850eb2f.png

    2.什么是tomcat

    tomcat其实是一个用java语言开发的免费开源的web服务器(因为是java语言开发,这就是为什么使用tomcat前要配置好jdk,因为jdk里面有jvm,而运行java应用需要jvm)。此时再次查看任务管理器会发现多了一个javaw.exe

    看了两者之间的概念之后,相信我们都清楚了两者之间的关系。

    现在还有一个问题:

    同一个tomcat下的java ee项目使用的是不是同一个jvm?答案是是的。(使用的都是启动tomcat的jvm)这个可以通过启动不同的web应用来自己判断。

    如果运行的是普通的java se程序,使用的是不是同一个jvm呢?答案是否。这个可以自己运行程序判断。(可以写一个很简单的while死循环,便于查看)。

    https://blog.csdn.net/u010653908/article/details/53405395

    展开全文
  • JVMTomcat的关系

    2021-03-06 21:25:55
    JVMtomcat之间的关系,从下面的几个方向说明:1、JVM,java虚拟机,不同设备运行java应用程序的平台。2、Tomcat,apache免费开源的web应用服务器,通过java语言编写,换句话说:tomcat亦是一个java应用程序。-----...

    最近在做微服务部署相关的项目,使用的容器为汤姆猫tomcat,过程中通过和架构师的交流以及自己的理解得出了几个关键信息

    这里记录下。

    JVM和tomcat之间的关系,从下面的几个方向说明:

    1、JVM,java虚拟机,不同设备运行java应用程序的平台。

    2、Tomcat,apache免费开源的web应用服务器,通过java语言编写,换句话说:tomcat亦是一个java应用程序。

    --------  这里不难看出tomcat容器的启动离不开JVM

    3、JVM某种程度上可以被认为是一个虚拟的操作系统,它有着自己的内存模型等;

    4、一个tomcat容器的启动,相当于在JVM中启动了一个进程;

    5、一个tomcat容器中可以启动多个web app这些被看做进程中启动了多个线程。(通过在server.xml中指定多个context)

    6、每个进程都有自己独立的内存空间,因此进程间的通信较为困难;

    7、而进程中的线程启动时,不会额外的分配内存空间,换句话说:进程中的多个线程共享内存空间,因此通信较为方便快速。

    另外一个思考就是:webUI服务中的java代码是否有存在的必要??

    现代微服务架构中,tomcat容器是一个厚重的web容器,一个微服务的启动相当于在部署节点的JVM上增加了一个进程,这必然会带来一定的内存开销;

    对于webUI性质的微服务,建议只保留纯静态文件(javascript、css、gif等),并且部署容器选择更轻量级的nginx;并且在整体部署规划上,将此类服务部署在同一节点上

    展开全文
  • Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议
  • 1.查询tomcat的pidnetstat-anp|grep端口号2.jmap -heap pidjmap-heap29170输出AttachingtoprocessID29170,pleasewait...Debuggerattachedsuccessfully.Servercompilerdetected.JVMversionis24.79-b02using...
  • Tomcatjvm配置

    2021-03-13 04:59:01
    Tomcat的内存溢出本质就是JVM内存溢出,JAVA程序启动时JVM会分配一个初始内存和最大内存给程序。当程序需要的内存超出内存的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。1.Tomcat异常类型常见的Java内存...
  • 1.1.Tomcat设置JVM启动参数 1.1.1.Windows环境 ①.添加JVM参数 在Tomcat的bin目录,打开catalina.bat,添加如下参数: set “JAVA_OPTS=-Xms512M -Xmx1024M” ②.校验是否生效 1)JDK8以下版本 执行命令jvisualvm...
  • 1. 建立基础镜像 FROM centos MAINTAINER fengjianENV 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 ...
  • apache-tomcat-8.5.63\bin\service.bat 提前...JVM配置参考https://lionli.blog.csdn.net/article/details/82908289 (虚拟机测试给的内存小,有的参数openjdk8不支持就删除了,推荐结合自己的tomcat日志处理) ...
  • 在window系统下,修改tomcat目录/bin/catalina.bat 文件在第一行代码之前增加如下代码setJAVA_OPTS=%JAVA_OPTS%-server-Xms256m-Xmx256m-Xmn96m-XX:MaxTenuringThreshold=10-Dfile.encoding=UTF-8其中-server-Xms256...
  • tomcat其实是一个用java语言开发的免费开源的web服务器(因为是java语言开发,这就是为什么使用tomcat前要配置好jdk,因为jdk里面有jvm,而运行java应用需要jvm)。此时再次查看任务管理器会发现多了一个javaw.exe ...
  • 前言安装再docker中的tomcat,在下载大文件或者某些情况下,会出现tomcat的内存溢出等情况,所以需要配置tomcat的内存大小,docker中的tomcat内存大小配置有四种方式。一、修改catalina.sh加入JVM:JAVA_OPTS="-...
  • 查看tomcatjvm内存结构 图形化界面查看 localhost:8080/manager/status 可以查看manager页面 如果是远程访问tomcat,会报403无法访问错误 1.红框1中告诉我们没有权限,提示我们修改context.xml文件 manager权限...
  • JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" cygwin=false windows下修改JVM内存大小: 情况一:解压版本的Tomcat, 要通过startup.bat启动tomcat才能加载配置 要添加在tomcat ...
  • Tomcat8.5,jdk8 配置参数说明 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize:设置年轻代大小 -XX:NewRatio:设置年轻代和年老代的比值 -XX:SurvivorRatio:年轻代中Eden区与两个Survivor区的比值 -XX:...
  • TomcatJVM的内存配置

    2021-02-12 17:00:31
    原文路径:...-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn Java Heap Young区大小,不熟悉最好保留默认值;...
  • tomcat配置jvm参数

    2020-12-18 19:29:43
    linux vim catalina.sh CATALINA_OPTS="-server -Xms64m -Xmx128m" cygwin=false
  • linux下tomcat设置jvm的参数tomcat启动执行步骤:jvm参数设置VM内存分配设置的参数有四个 tomcat启动执行步骤: tomcat/bin/startup.sh, startup.sh执行的是catalina.sh jvm参数设置 要在catalina.sh中进行设置 在...
  • Tomcat 设置JVM内存大小

    2021-02-28 06:23:50
    JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" cygwin=false windows下修改JVM内存大小: 情况一:解压版本的Tomcat, 要通过startup.bat启动tomcat才能加载配置 要添加在tomcat ...
  • bin/catalina.sh 最上面一行添加如下 JAVA_OPTS="JAVAOPTS−Duser.timezone=GMT+08"JAVAOPTS="{JAVA_OPTS} -Duser.timezone=GMT+08" JAVA_OPTS="JAVAO​PTS−Duser.timezone=GMT+08"JAVAO​PTS="{JAVA_OPTS} -...
  • JVM参数的设置以及在Windows和Linux下运行tomcat时的设置方法JVM参数的设置以及在Windows和Linux下运行tomcat时的设置方法JVM调优里最重要的就是设置JVM参数1. 主要设置的额参数如下所示2. 在Windows和Linux下启动...
  • Tomcat管理器报告的线程数与... Tomcat线程和JVM线程之间有区别吗?来自Tomcat Manager的行:最大线程数:200当前线程数:7当前线程忙:3ManagementFactory.getThreadMXBean()。getThreadCount():38参考方案Tomca...
  • K8S集群部署kube-Prometheus监控tomcat jvm 一、背景描述 kube-Prometheus部署在K8S集群中! kube-prometheus部署参考:K8S集群二进制部署之Prometheus监控告警 现在需要实现kube-prometheus 监控 tomcat jvm tomcat...
  • 以下内容,以tomcat-8.0.14和jdk1.8.0_20为基准,服务器为ubuntu。“java -Xmx3550m -Xms3550m -Xmn2g -Xss128k ”是可以直接命令行设置JVM参数吗?是一次性的而重启后失效吗?这样可以设置jvm的参数;是一次性的。...
  • 本文和大家重点讨论一下如何设置TomcatJVM内存大小,JAVA程序启动时JVM都会分配一个初始内存和***内存给这个应用程序。这个初始内存和***内存在一定程度都会影响程序的性能。如何设置TomcatJVM内存大小Tomcat...
  • 设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置三、实例,以下给出1G内存环境下java jvm 的参数设置参考:JAVA_...
  • 一、设置Windows服务自动启动方式修改 修改注册表或者修改运行tomcatW.exe出来的...(64位操作系统)HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java ...
  • 修改TOMCATJVM虚拟机内存大小几种方式 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。 经常会出现Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出的错误。 ...
  • JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" cygwin=false ----------------------windows下修改Tomcat JVM内存大小---------------------- 情况一:解压版本的Tomcat , 要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,763
精华内容 51,105
关键字:

jvmtomcat