- 浏览: 468243 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (371)
- Java (44)
- Flex (25)
- Design Pattern / UML (5)
- JVM (14)
- Software Engineer (4)
- Testing (30)
- Web Backend (60)
- Linux (7)
- Database (11)
- SOA (28)
- English (6)
- FX (5)
- SAP Support (25)
- SAP Development (5)
- SAP Impl & Oprn (8)
- Articles (15)
- Music (4)
- Recipe (14)
- Multi-thread (4)
- Lucene (2)
- CS basic / Algorithm (12)
- Tour (3)
- C C++ (21)
- Others (10)
- Code Repository C++ (1)
- Code Repository Java (1)
- Code Repository Algorithm (1)
- Code Repository SQL (1)
- Web Frontend (4)
最新评论
-
xiangxm:
Java 强引用、 软引用、 弱引用、虚引用 -
nml-lyb:
123
Mule 的第一个例子 -
nml-lyb:
http://www.baidu.com
Mule 的第一个例子 -
white___ant:
...
Java 强引用、 软引用、 弱引用、虚引用 -
joeyon:
...
Java NIO介绍
最近需要参与一些java程序debug和性能调整方面的工作,jconsole是jdk自带的工具,比较好用,以下文章前面大部分翻译自:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html ,后面关于用户名/密码和使用ssl加密连接的部分是从其他地方搜集的资料并且进行了验证。 Jconsole是一个JMX兼容的监视工具。它使用Java虚拟机的JMX机制来提供运行在Java平台的应用程序的性能与资源耗费信息。 Jconsole应用程序位于JDK_HOME/bin目录下。 可以使用jconsole监视本地应用程序和远程应用程序。 注意:在开发阶段或者原型阶段,使用jconsole监视本地应用程序是很有用的,但是不建议在生产环境中使用,因为jconsole本身也将显著的消耗系统资源。推荐使用远程监视来将jconsole和被监视平台孤立开。查看jconsole详细语法:jconsole - Java Monitoring and Management Console. 如果需要监控本地应用程序,那么启动jconsole使用的用户id必须和被监视程序的用户id一致。启动本地监控的命令语法如下: Jconsole [processed] 得到进程号(PID)的办法: Unix/Linux:使用ps查看java进程的PID Windows:任务管理器查看java或者javaw进程的PID 也可以使用jps命令行工具 查看PIDs 例子:如果你发现notepad.jar应用程序的PID为2956,则可以通过如下命令启动jconsole: jconsole 2956 jconsole和被监视的应用程序必须是使用同一个用户运行的。管理和监视系统使用操作系统的文件权限。 如果你没有指定PID,jconsole会自动的探测出本地运行的所有java应用程序并显示一个对话框让你选择你想监控的程序(见下一节) 详细信息见:Local JMX Monitoring and Management. 使用如下命令启动jconsole进行远程监视: jconsole [hostname:portNum] Hostname是被监控系统主机名,portNum是当你启动JVM,打开JMX代理之后指定的端口号。详细信息见:Remote JMX Monitoring and Management. 如果你没有指定主机名/端口号,那么jconsole会显示一个连接对话框(见下一节)来输入主机名和端口号。 如果在启动jconsole的时候指定了要连接的JMX代理,它会自动的启动对指定JVM的监视。任何时候如果你想连接到另外一台主机,可以选择:Connection | New Connection并输入连接信息。 或者如果你没有输入代理,那么启动jconsole之后会出现连接对话框,对话框有三个tab页: Local Remote Advanced Local选项卡列出了在本地系统上,使用与启动jconsole相同的用户运行的JVM及其PID、类/参数信息。选择需要坚实的应用程序,然后点击Connect 要监视远程JVM,需要输入: Host name:远程主机名 Port number:启动JVM的时候指定的JMX代理(agent)端口号。 User name and password:使用的用户名和密码(仅在通过需要用户名/密码的 JMX代理监视JVM时需要) 关于设置JMX代理端口号的详细信息,见: Enabling the JMX Management Agent. 关于用户名和密码的详细信息,见: Using Password and Access Files. 要监视JVM本身使用的JVM,仅需设置主机名为localhost,端口号为0,然后点击Connect即可。 利用Advanced选项卡,你可以通过输入JMX URL及其用户名密码来连接其他JMX代理(MBean Servers),JMX URL的语法在如下链接: javax.management.remote.JMXServiceURL. 注意:如果JMX代理在使用一个未包含在Java平台中的连接器(connector),你需要在运行jconsole时将connector classes加入到classpath中,如下: jconsole –J-Djava.class.path=JAVA_HOME/lib/jconsole.jar:JAVA_HOME/lib/tools.jar:connector-path Jconsole界面由以下六个选项卡组成: Summary选项卡:显示JVM和被监视值的汇总信息 Memory选项卡:显示内存使用信息。 Threads选项卡:显示线程使用信息。 Classes选项卡:显示类(class)加载信息。 MBeans选项卡:显示MBeans信息 VM选项卡:显示JVM信息。 以下是详细介绍: Summary选项卡显示了关于线程使用、内存消耗和class加载的一些关键监视信息,以及JVM和操作系统的信息。 Summary Uptime:JVM已运行时长。 Total compile time:花费在即时编译(JIT compilation)中的时间。 Process CPU time:JVM花费的总CPU时间。 Threads Live threads:当前活动的daemon线程加non-daemon线程数量。 Peak:自JVM启动后,活动线程峰值。 Daemon threads:当前活动的Daemon线程数量。 Total started:自JVM启动后,启动的线程总量(包括daemon,non-daemon和终止了的) Memory Current heap size:堆(heap)占用的内存量,以K为单位。 Committed memory:为堆分配的内存总量 Maximum heap size:堆占用的最大内存量。 Objects pending for finalization:等待析构(finalization)的对象数量。 Garbage collector information:GC信息,摆阔垃圾回收器名称,已执行的垃圾回收次数和执行垃圾回收总耗时。 Classes Current classes loaded:当前被加载到内存的classes数量 Total classes loaded:自JVM启动后被加载到内存的classes总量,包括后来卸载的。 Total classes unloaded:自JVM启动后,从内存卸载的classes总量。 Operating System: Total physical memory:物理内存总量 Free physical memory:物理内存空闲量 Committed virtual memory:为运行中的进程分配的虚拟内存总量 Memory选项卡提供了内存消耗和内存池信息。 以上图表显示了JVM的内存使用和时间的对应关系,包括heap和non-heap内存以及指定的(specific)内存池。内存池种类与具体使用的JVM有关,以HotSpot JVM为例,内存池有: l Eden Space(heap):大多数对象初始化时从Eden Space池分配内存,即是存在于此池中 l Survivor Space(heap):此池包含的对象是那些原先在eden space中,但是已经经历过垃圾回收而仍然存在的对象。 l Tenured Generation(heap):在surviver space中已经存在了一段时间之后的对象会移动到这个池中。 l Permanent Generation(non-heap):包含虚拟机自身的所有反射数据。比如class和mothod对象。对于使用class data sharing的JVM,这一代分为只读和读写两个区域。 Code Cache (non-heap):HotSpot JVM也包含一个“代码缓存”,是编译和存储本地代码所占用的内存。 查看关于内存池的详细信息:Garbage Collection. Detail区域显示了几种当前内存度量: l Used:当前使用的内存总量。使用的内存总量是指所有的对象占用的内存,包括可达和不可达的对象。 l Committed:JVM可使用的内存量。Committed内存数量可能随时间变化而变化。JAVA虚拟机可能将某些内存释放,还给操作系统,committed内存可能比启动时初始分配的内存量要少。Committed内存总是大于等于used内存。 l Max:内存管理可用的最大内存数量。此值可能改变或者为未定义。如果JVM试图增加使用内存(used memory)超出了committed内存,那么即时使用内存小于或者等于最大内存(比如系统虚拟内存较低),内存分配仍可能失败。 右下角的图表显示了内存池在heap和non-heap消耗的内存量。当内存使用超出了内存使用阀值时,柱状图会变红。你可以通过设置MemoryMXBean的一个属性来调整内存占用阀值。 Heap and Non-heap内存 JVM管理两种内存:heap和non-heap内存,两种内存都是在JVM启动时建立。 Heap memory 是运行时数据区域,用于JVM为所有对象实例和队列分配的内存。Heap可能为固定植或者可变值。垃圾收集器是一个用于回收对象占用的heap内存的自动化内存管理系统。 Non-heap memory 包含一个在所有线程共享的方法区域(method area)和内部进程或JVM优化所需的内存。它存储了每一个类的结构,比如运行常量池,字段和方法数据,构造函数和方法的代码。方法区域逻辑上是 heap的一部分,但是依赖于实现,JVM可能不进行垃圾收集或压缩。像heap一样,方法区域可能为固定或可变大小。方法区域所需要的内存没有必要是连续的。 除了方法区域之外,一个JVM实现的内部进程或优化所需的内存也属于non-heap内存。比如JIT编译器为了提高性能而用于存储本地机器码所需的内存。 内存池和内存管理 内存池(Memory pools)和内存管理器是JVM内存管理系统的关键部分 一个内存池(memory pool)代表JVM管理的一块内存区域。JVM拥有最少一个内存池,JVM在运行中可能创建或删除内存池。一个内存池可以属于heap内存或者non-heap内存。 内存管理器(memory manager)管理一个或多个内存池。垃圾回收其是一种负责回收被不可打对象占用的内存的内存管理器。一个JVM可以拥有一个或者多个内存管理器。JVM在运行中可能增加或删除内存管理器。一个内存池可以被多于一个内存管理器管理。 垃圾收集: 垃圾收集(GC)是指JVM释放那些被无引用对象占用的内存空间。它通常认为那些有活动引用的对象是“活”对象,而那些没有引用或不可达的对象为“死”对象”。垃圾收集是释放被死对象占用的内存的过程。GC的算法和参数对性能有巨大的影响。 HotSpot VM垃圾收集器使用 分代垃圾收集(generational garbage collection)。分代GC利用了大多数程序中,从经验看有如下特点: 很多对象有一个很短的生存期(比如迭代器iterators、本地变量) 某些对象拥有很长的生存期(比如高层持久化对象) 所以,分代的GC将内存划分为代(generations)并且赋予每一个内存池。当一代用尽了分配的内存,VM会在那个内存池进行一次局部(partial)的垃圾收集(或者叫minor collection)来收集被死对象占用的内存。局部垃圾收集比全垃圾收集(full GC)快的多。 HotSpot VM定义了2代:young generation (有时叫做nursery)和old generation。Young generation由一个eden space和两个survivor spaces组成。最初,VM将所有的对象放入eden space,大多数对象死在那里~~~,当VM运行了一次minor GC,VM将剩余的对象从eden space移动到某个survivor space中。然后VM将那些在survivor spaces中生存了足够长时间的对象移动到位于old generation中的tenured spaces。当tenured spaces满了以后,将发生一次full GC,full GC涉及到所有存活的对象,因此比较慢。Permanent generation保存了所有的虚拟机自身的反射数据,比如class和method objects 默认情况下代的排列类似于下图: 如同下文链接中说明的,如果垃圾收集器成为瓶颈,你可以通过自定义代大小来提高性能。使用jconsole可以发现你的性能情况对垃圾收集器参数的敏感程度。详细情况见: Tuning Garbage collection with the 5.0 HotSpot VM 线程选项卡提供了关于线程使用的信息。 左下角列出的为所有的活动线程。如果你在过滤(filter)对话框输入字符串,那么线程列表将尽显示那些包含你输入字符串的线程。在线程列表上点击线程名,可以显示在右侧显示县城信息,包括线程名,状态和调用堆栈。 图表显示了活动线程/时间。有三行内容: Magenta:线程总数 Red:峰值线程数 Blue:活动线程数。 关于线程、daemon线程详细信息,请查看链接:java.lang.Thread Classes选项卡显示了关于class loading的信息: 图表显示了 类加载/时间 红线是类加载总数(包括后来卸载的) 蓝线表示当前的类加载数量。 选项卡底部的Detail节显示了自JVM启动后类加载的总量,当前加载量和卸载量。 MBean选项卡显示了所有在platform MBean server上注册的MBeans的信息。 左边的树形结构显示了所有的MBean,按其对象名排序。当在树种选择了一个MBean之后,其属性、操作、通知和其他信息会在右边显示。 如果属性值是可写的(可写会蓝色显示),你可以设置属性值。你也可以调用在操作选项卡中显示的操作。 显示图表: 你可以通过双击属性值的方法显示一个属性值/时间图表,比如,如果你双击java.lang.GarbageCollector.Copy Mbean的CollectionTime属性,你会得到如下图所示的显示: VM选项卡提供了JVM的信息。 这些信息包括: Uptime:JVM启动后的总时间。 Processes CPU Time:JVM启动后消耗的总CPU时间。 Total Compile Time:即时编译(JIT compilation)消耗的总时间。JVM的具体实现决定JIT编译何时发生。Hotspot VM使用adaptive compilation,在这种方式zhogn ,VM使用标准的解释器(interpreter)运行一个应用程序,但是会分析其代码判断性能瓶颈或者”hot spots”。 Windows平台:修改catalina.bat,在dorun和dostart段开头增加一行(注意是一行): set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false" Unix/Linux平台:修改catalina.sh,在dorun和dostart段开头增加一行(注意是一行): JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false" 启动tomcat之后,根据上文中的jconsole简介中的命令启动jconsole,如果是在服务器本地运行jconsole,会出现如下界面: 直接进行连接即可。 如果是远程监控,需要点击远程选项卡并输入相关信息,示例如下: “主机名或ip”处填写需要监视的主机ip,端口为服务器上上文中添加的-Dcom.sun.management.jmxremote.port="portNumber"设定的端口,本文以9004为例。在设定为:-Dcom.sun.management.jmxremote.authenticate="false" 的情况下,用户名和口令留空即可。 在上文中的配置适用于在测试环境中监视tomcat,如果是在生产环境中监视tomcat则需要在安全性上有进一步要求。 1. 修改上文中的catalina脚本中的JAVA_OPT参数,将 2.将$JRE/lib/management/jmxremote.password.template文件在同目录下复制一份,重命名为$JRE/lib /management/jmxremote.password,编辑jmxremote.password,添加允许访问的用户名及密码,比如添加用户 zxwh,密码为zxme,则在文件尾添加一行: 3. 编辑$JRE_HOME/lib/management/jmxremote.access文件,对刚才添加的用户赋予一定的权限: 4. 确认jmxremote.password和jmxremote.access两个文件中的用户是相同的。注意如果jmxremote.access中没有对应用户的话,配置是无效的。 5. 由于jmxremote.password中的密码都是明文保存的,所以jmxremote.password、jmxremote.access文件的权限要注意,应该设置为只有owner才可读,当然这个用户也必须是启动tomcat的用户。 6. 启动jconsole进行连接,在用户名和口令处输入设定的用户和密码。 7. 使用密码认证方式进行连接,不但可以提高安全性,而且可以对用户的权限进行设置。如果不使用密码认证的方式,则无法对用户的权限进行限制。 1. 在服务器上使用keytool创建密钥对 2. 导出公钥 3. 将公钥导入至需要运行jconsole的机器。 4. 修改tomcat的catalina脚本 5. 使用如下参数启动jconsole : 6. 填入主机名、用户、口令连接服务器。 1. 在执行shutdown.sh或者shutdown.bat脚本关闭tomcat时出现如下错误,tomcat无法关闭: 出错原因:JAVA_OPT变量设置的参数未放置于本文档中指定位置。 http://k-freedom.spaces.live.com/blog/cns!CF84914AA1F284FD!336.entryJconsole简介:
开始jconsole
命令语法:
本地监视:
远程监视:
连接JMX代理:
Local选项卡
Remote选项卡
Advanced选项卡
Jconsole界面:
查看汇总信息:
监视内存消耗:
监视线程使用:
监视Class加载:
监视和管理MBeans:
查看VM信息。
配置tomcat使用jconsole
修改catalina脚本
启动jconsole
进阶安全设定
配置jmx访问密码
-Dcom.sun.management.jmxremote.authenticate="false" 修改为:
-Dcom.sun.management.jmxremote.authenticate="true"
zxwh zxme
注意用户密码不能包含空格,tab等字符
zxwh readonly (或者readwrite)
注:以上配置文件的位置都是可以更改的,具体配置方法在此不再赘述。 配置使用ssl进行加密连接
keytool是java平台自带的一个密钥和证书管理工具,使用keytool创建密钥对:
keytool -genkey -alias tomcat -keystore /somepath/tomcatKeyStore
按照提示输入相关信息(包括设定密码、姓、组织名等),这些信息是可以随便输入的,但从产品角度讲应该统一设定。输入的密码在今后操作中均需要使用。
keytool -export -alias tomcat -keystore /somepath/tomcatKeyStore -file /somepath/jconsole.cert
keytool –import –alias jconsole –keystore /somepath/jconsoleKeyStore -file /somepath/jconsole.cert
将-Dcom.sun.management.jmxremote.ssl="false"修改为:
-Dcom.sun.management.jmxremote.ssl="true",并在 JAVA_OPTS变量行添加:
-Djavax.net.ssl.keyStore=/somepath/jconsoleKeyStore
-Djavax.net.ssl.keyStorePassword=设定的密码
jconsole -J-Djavax.net.ssl.trustStore=/somepath/jconsoleKeyStore 其他问题
错误: 代理抛出异常: java.rmi.server.ExportException: Port already in use: 9004;
nested exception is:
java.net.BindException: Address already in use: JVM_Bind
发表评论
-
Servlet Async
2015-05-15 02:29 468http://www.importnew.com/8864. ... -
EHcache
2014-09-06 23:32 496http://blog.csdn.net/liuzhenwe ... -
Maven构建并热部署一个简略的Web Project
2014-08-01 01:51 708zz from : http://www.myexcept ... -
Tomcat 权限配置,当使用Eclipse启动时都会被修改为默认
2014-07-31 07:57 518http://zhidao.baidu.com/link?u ... -
解决tomcat占用8080端口问题图文教程
2014-07-30 21:59 603zz from http://jingyan.baidu. ... -
HttpURLConnection用法详解
2013-09-04 02:08 644http://www.cnblogs.com/guodong ... -
使用HttpSessionListener接口监听Session 的创建和失效
2013-09-03 03:55 789http://uule.iteye.com/blog/824 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2013-09-03 03:49 336http://www.cnblogs.com/JesseV/ ... -
servlet listener
2013-09-03 03:43 626http://sakyone.iteye.com/blog/ ... -
servlet filter
2013-09-03 03:42 679http://sakyone.iteye.com/blog/ ... -
Servlet中Request的getAttribute getParameter 区别
2013-08-29 12:31 1077http://blog.csdn.net/yangqillo ... -
用windows启动tomcat
2013-07-04 09:36 624services.msc -
Spring 加载 application.xml 出错FileNotFoundException
2013-06-23 21:26 919http://zhidao.baidu.com/questi ... -
<context-param>与<init-param>的区别与作用
2013-06-18 08:08 683http://www.cnblogs.com/hzj-/ar ... -
HttpWatch工具简介及使用技巧
2012-05-09 14:13 3885http://cfeng518.blog.163.com/bl ... -
Web Service (Axis2实现)
2012-04-19 11:13 1293转载from http://wangyaobeiji ... -
Tomcat4 源代码分析 (20) How Tomcat Works 第二十章
2009-07-27 17:24 876Chapter 20 : JMX-Based Manageme ... -
Tomcat4 源代码分析 (19) How Tomcat Works 第十九章
2009-07-27 17:19 753Chapter 19 : Manager Servlet ... -
Tomcat4 源代码分析 (18) How Tomcat Works 第十八章
2009-07-27 16:58 793Chapter 18 : Deployer T ... -
Tomcat4 源代码分析 (17) How Tomcat Works 第十七章
2009-07-24 17:57 1040Chapter 17 : Tomcat Startup ...
相关推荐
【JConsole工具详解】 JConsole是Java Development Kit (JDK) 自带的一个强大的监测和管理工具,主要用于诊断和分析Java应用...对于基于JDK 5.0的Tomcat配置,确保JConsole的兼容性以及正确配置JMX代理是关键步骤。
在提供的文件"jconsole+tomcat配置说明(基于jdk5_0) - bluestar - JavaEye技术网站.htm"中,应该包含了更详细的步骤和示例,指导如何在JDK 5.0环境下配置jconsole来监控Tomcat。文件名中的“bluestar”可能是一个...
例如,Apache Tomcat Manager允许用户通过Web界面管理部署在Tomcat上的应用程序,而Apache JConsole则是一款用于监视Java应用程序(包括Tomcat)性能的工具。 文件上传通常涉及到两个关键部分:前端和后端。前端...
本文将深入探讨Tomcat的配置方法,帮助你更好地理解和管理你的Web应用。 首先,让我们从基础开始,了解Tomcat的目录结构。在解压Tomcat安装包后,你会看到几个主要的目录和文件: 1. **bin**:包含启动和停止...
JConsole 使用说明 一旦 JConsole 成功连接到远程 JVM,它将展示一系列标签页,提供不同的监控视角: - **概述**:展示基本的 JVM 和监控变量信息。 - **内存**:提供详细的内存使用情况。 - **线程**:显示当前...
### Linux 下 Tomcat 优化设置最大连接数及内存 JConsole 监控 #### 一、Tomcat 内存优化 ##### 1.1 基本原理 在启动 Java 应用程序时,JVM(Java 虚拟机)会为应用程序分配一定的初始内存和最大内存。这些设置对...
3. **监控Tomcat**:`bin/catalina.sh`或`catalina.bat`脚本也可以以“监控”模式运行,通过`jps`命令可以查看Tomcat进程,而`jstat`和`jconsole`等JVM工具可以分析Tomcat的内存使用、线程状态和GC行为。 4. **配置...
2. 使用Tomcat提供的JMX监控工具或第三方工具(如JConsole、VisualVM)监控服务器性能。 完成以上步骤后,你就成功地安装并配置了Apache Tomcat,可以开始开发和部署Java Web应用了。在实际使用中,可能还需要根据...
8. **监控与管理**:通过`bin/catalina.sh`或`.bat`脚本的`jmxproxy`参数,可以启用JMX代理,使用JMX工具(如VisualVM或JConsole)来监控Tomcat的状态和性能。 总结起来,"apache-tomcat-6.0.33.zip"是一个包含所有...
12. **JMX监控**:Apache Tomcat支持Java Management Extensions (JMX),可以通过JConsole或其他工具进行远程监控和管理,如查看内存使用情况、线程状态等。 13. **性能优化**:根据实际需求,可以调整Tomcat的JVM...
Tomcat提供了一些内置的监控工具,如JMX(Java Management Extensions)和JConsole,可以帮助你监控应用状态和性能。日志文件位于`logs`目录下,对于诊断问题非常有用。 **升级和维护** 随着新版本的发布,保持...
9. **监控与故障排查**:使用`jconsole`或`VisualVM`等工具监控Tomcat的CPU、内存使用情况,以及线程和类加载器的状态,有助于识别和解决性能问题。 10. **升级与迁移**:随着技术的发展,可能会需要将应用迁移到更...
以下是对Apache Tomcat 7.0.26源码的详细说明: 1. **目录结构**:解压后的源码目录结构清晰,包括`bin`(可执行文件和脚本)、`conf`(配置文件)、`lib`(依赖库)、`webapps`(默认部署的应用)、`work`(工作...
- `tomcat配置JVM.txt`应该是详细的JVM配置指南,提供了如何在Tomcat的启动脚本或者server.xml文件中添加和调整JVM参数的说明。 4. **垃圾收集和内存管理**: 了解不同类型的垃圾收集器,如Serial、Parallel、...
总之,部署和管理Tomcat 6.0在Linux环境需要对Linux基础操作、Java环境和Tomcat配置有深入理解。熟练掌握这些步骤,可以确保Java Web应用的稳定运行。在实际工作中,还应关注Tomcat的版本更新和安全补丁,以保持系统...
10. **监控与故障排查**:使用`jconsole`、`jvisualvm`等工具监控Tomcat的运行状态,定位性能瓶颈。 这份配套资源将有助于读者深入理解Linux上的Tomcat 9管理,提供实际操作的实践经验,从而提升其在Java Web开发和...
- 使用`jconsole`或`jvisualvm`等工具监控Tomcat的CPU、内存和线程状态。 - 调整`JAVA_OPTS`环境变量,增加堆内存大小(如`-Xms256m -Xmx1024m`),根据实际情况进行优化。 通过以上步骤,你可以在CentOS系统上...
- 使用`jstack`或`jconsole`等工具分析Tomcat进程,了解其运行状况。 总结,Apache Tomcat 8.5.54是一个强大且灵活的Java应用服务器,特别适合开发和部署Java Web应用。正确安装和配置后,你可以利用它的功能实现...
- 使用`jstack`或`jconsole`等工具监控Tomcat的线程和内存状态。 10. **版本更新与升级** - 随着时间推移,新版本的Tomcat会修复安全漏洞并提供新功能。升级Tomcat时,需要先停止旧版本,然后替换新的tar.gz文件...