最新程序员,我教你玩转Tomcat监控管理(2),java工程师面试笔试题

架构学习资料

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

这个界面只是简单的访问Tomcat服务器的状态,使您能够快速查看相关数据。后面的章节会有详细的讲解。

查询Tomcat指标

Tomcat Manager可以使用 manager-jmx角色访问JMX代理servlet,该角色允许您从Web浏览器查询。您可以在 http://localhost:8080/manager/jmxproxy找到Tomcat的可用MBean列表(纯文本格式)。

如果要查询特定MBean的数据,可以按以下格式将参数添加到MBean的域,类型,名称和属性的URL中:

http://localhost:8080/manager/jmxproxy/?get=:type=,name=“”&att=<JMX_ATTRIBUTE>

在上述的JMX属性和MBean列中找到这些参数。您可以使用以下命令查看HTTP连接器的最大请求处理时间的数据:

http://localhost:8080/manager/jmxproxy/?get=Catalina:type=GlobalRequestProcessor,name=“http-nio-8080”&att=maxTime

这将产生以下结果:

OK - Attribute get ‘Catalina:type=GlobalRequestProcessor,name=“http-nio-8080”’ - maxTime = 189`

命令模式使用起来比较复杂并且不直观,同时不能比较多个指标或查看数据随时间的变化情况。为了更深入地了解Tomcat的运行状况和性能,我们需要使用其他工具,如JConsole。

为Tomcat监视工具启用远程JMX连接

在使用JConsole监视Tomcat服务器之前,需要为JMX启用远程连接。JConsole可能会消耗大量系统资源,因此Oracle 建议仅通过连接到远程主机,将JConsole与正在监视的服务器隔离。请注意,启用远程JMX访问需要适当的安全预防措施,因为JMX提供有限制的访问控制。为了演示的方便,我们禁用SSL。

首先,在Tomcat的**/ bin目录中创建一个setenv.sh**文件,并包含以下内容:

export JAVA_OPTS=“ J A V A O P T S − D c o m . s u n . m a n a g e m e n t . j m x r e m o t e " e x p o r t J A V A O P T S = " {JAVA_OPTS} -Dcom.sun.management.jmxremote" export JAVA_OPTS=" JAVAOPTSDcom.sun.management.jmxremote"exportJAVAOPTS="{JAVA_OPTS} -Dcom.sun.management.jmxremote.port=” export
JAVA_OPTS=“ J A V A O P T S − D j a v a . r m i . s e r v e r . h o s t n a m e = < T O M C A T H O S T O R I P > " e x p o r t J A V A O P T S = " {JAVA_OPTS} -Djava.rmi.server.hostname=<TOMCAT_HOST_OR_IP>" export JAVA_OPTS=" JAVAOPTSDjava.rmi.server.hostname=<TOMCATHOSTORIP>"exportJAVAOPTS="{JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false” export
JAVA_OPTS=" J A V A O P T S − D c o m . s u n . m a n a g e m e n t . j m x r e m o t e . a u t h e n t i c a t e = t r u e " e x p o r t J A V A O P T S = " {JAVA_OPTS} -Dcom.sun.management.jmxremote.authenticate=true" export JAVA_OPTS=" JAVAOPTSDcom.sun.management.jmxremote.authenticate=true"exportJAVAOPTS="{JAVA_OPTS} -Dcom.sun.management.jmxremote.access.file= C A T A L I N A B A S E / c o n f / j m x r e m o t e . a c c e s s e x p o r t J A V A O P T S = " {CATALINA_BASE}/conf/jmxremote.access export JAVA_OPTS=" CATALINABASE/conf/jmxremote.accessexportJAVAOPTS="{JAVA_OPTS} -Dcom.sun.management.jmxremote.password.file=${CATALINA_BASE}/conf/jmxremote.password

这将设置JConsole可用于远程连接到Tomcat服务器的主机名和端口。您可以指定任何主机名和未使用的端口。虽然此示例不包含SSL,但它确实启用了密码验证,并指定了在何处查找访问(用户名)和密码文件; 如果它们尚不存在,您可能需要创建它们。您可以通过编辑**$ {CATALINA_BASE} /conf/jmxremote.access**文件来添加新用户并为他们提供两种权限之一( readonlyreadwrite):

tomcatUserRead readonly

tomcatUserWrite readwrite

第一行授予 tomcatUserRead用户 readonly权限,这意味着该用户可以查看MBean属性并接收通知。

第二行 tomcatUserWrite用户提供了 readwrite权限,允许该用户添加和删除MBean,设置属性和运行操作。

接下来,在**$ {CATALINA_BASE} /conf/jmxremote.password**文件中为这些用户设置密码:

tomcatRead tomcatWrite

保存文件并重新启动Tomcat服务器。接下来,打开JConsole并运行以下命令,确保包含您在setenv.sh文件中定义的主机和端口:

jconsole <TOMCAT_HOST_OR_IP>:

这将打开JConsole界面,您可以在其中开始查看与JVM和Tomcat服务器相关的数据。

使用JConsole

JConsole是JDK附带的图形界面。JConsole提供了一种更直观的方式来监视关键JVM指标,如堆内存使用情况,线程使用情况和CPU使用情况。而不是通过有限的接口(如JMX代理)查询数据,您可以使用JConsole快速查看多个指标的数据,并深入查看Tomcat的Catalina和JVM的java.lang域的特定MBean类型和属性。您可以导航到六个不同的选项卡:概览,内存,线程,类,VM摘要和MBean。每个选项卡都提供一个下拉菜单,使您可以查看作用于不同时间范围的数据,例如最近五分钟,过去一个月或从服务器开始(在下拉列表中显示为“全部”选项)。

概览

JConsole的Overview选项卡显示了与JVM的内存使用情况,线程数,应用程序加载的Java类以及CPU使用率相关的信息,因此您可以一目了然地监视虚拟机的运行状况。

VM摘要

在“VM摘要”选项卡中,您可以查看有关JVM体系结构及其特征的更多详细信息。如果您需要快速查看系统级属性或JVM配置设置,这将非常有用。这包括您在Tomcat的**/bin/setenv.sh**配置文件中指定的任何参数。

内存

在“内存”选项卡下,您可以查看有关虚拟机堆和非堆内存使用情况的更详细统计信息,以及有关内存池的数据。在此选项卡中,您可以单击“执行GC”以运行垃圾回收,就像在Tomcat管理器中一样。

如果需要查看与特定内存池相关的数据,可以从“内存”选项卡左上角的“图表”下拉列表中选择该数据。

线程

JConsole的“线程”选项卡提供有关可用JVM线程的更多详细信息以及对死锁线程的检查。“线程”列表显示线程名称,状态(类似于您在Tomcat的服务器状态页面上看到的线程“阶段”),以及每个可用线程的堆栈跟踪。死锁检查对于查找可能导致应用程序挂起的线程非常有用。如果找到任何死锁线程,您将看到一个新的死锁选项卡,其中包含有关导致死锁的更多信息。

MBean

要查看与您正在监视的Tomcat指标相关的实时数据,您可以在MBeans选项卡下查看Catalinajava.lang域,并深入查看特定属性。与Tomcat Manager一样,JConsole从MBean服务器收集数据,但提供了一个更简单的界面来查找所需的指标。

JConsole提供了JVM和MBean数据的完美摘要,它使您能够绘制JVM数据图形,以可视化资源使用趋势。

自定义Tomcat访问和服务器日志

默认情况下,Tomcat访问日志使用公共日志格式 ,并记录服务器处理的所有请求。您可以在Tomcat的conf / server.xml配置文件中查看访问日志中包含的内容:

<Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs” prefix=“localhost_access_log” suffix=“.txt” pattern=“%h %l %u %t “%r” %s %b” />`

Valve元素的 pattern属性指定应包含在每个日志条目中的每个请求(及其响应)的信息:

  • 发出请求的客户端的主机名或IP地址( %h )

  • 来自identd服务的用户名(总是返回’ - ')( %l )

  • 经过身份验证的用户名(返回 -如果未使用)( %u )

  • 请求的日期和时间( %t )

  • 请求方法和URI( %r )

  • 响应的HTTP状态代码( %s )

  • 返回给客户端的对象大小,以字节为单位( %b )

上面示例中使用的模式将按以下格式记录请求:

192.168.33.1 - - [21/Sep/2018:16:51:59 +0000] “GET /sample/ HTTP/1.1” 403 1145

Tomcat默认也会生成服务器日志,并使用java.util.logging 包来实现 。服务器日志显示与Tomcat JVM和Catalina服务器相关的信息,包括内存不足(OOM)错误和部署活动,如下例所示:

16-Oct-2018 18:37:08.624 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 16-Oct-2018 18:37:08.625 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/9.0.10 16-Oct-2018 18:37:08.629 SEVERE [main] org.apache.catalina.startup.HostConfig.beforeStart Unable to create directory for deployment: [/opt/tomcat/conf/Catalina/localhost] 16-Oct-2018 18:37:08.672 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/webapps/sample.war] 16-Oct-2018 18:37:09.341 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/webapps/sample.war] has finished in [667] ms

Tomcat将服务器日志写入控制台和Catalina日志文件(例如, catalina.2018-07-03.log)。您可以自定义Tomcat应记录的信息类型,例如Tomcat日志记录属性文件( conf / logging.properties )中的最小日志级别,输出目录和输出格式。

处理程序是处理传入日志消息并格式化其输出的Java组件,使用格式化程序记录到文件( FileHandler)或控制台( ConsoleHandler )。Tomcat的日志记录属性文件包括Catalina服务器,Tomcat Manager和已部署的Web应用程序日志的配置:

############################################################

Handler specific properties. # Describes specific configuration info for Handlers.

############################################################
1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE 3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.bufferSize = 16384 java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter

最后

腾讯T3大牛总结的500页MySQL实战笔记意外爆火,P8看了直呼内行

腾讯T3大牛总结的500页MySQL实战笔记意外爆火,P8看了直呼内行

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值