22
2020
10

Tomcat顶层架构小结

(1)Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container; (2) Server掌管着整个Tomcat的生死大权; (3)Service 是对外提供服务的; (4)Connector用于接受请求并将请求封装成Request和Response来具体处理; (5)Container用于封装和管理Servlet,以及具体处理request请求。
22
2020
10

你平时怎么给tomcat调优?

第一步  – 提高JVM栈内存Increase JVM heap memory你使用过tomcat的话,简单的说就是“内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过配置TOmcat的配置文件(Windows 下的catalina.bat或Linux下的catalina.sh)可以解决这种问题.这种解决方法是通过增加JVM的栈内存实现的.也就是说,JVM通常不去调用垃圾回收器,所以服务器可以更多关注处理web请求,并要
22
2020
10

tomcat有哪几种Connector运行模式?

Tomcat Connector有三种运行模式(BIO, NIO, APR)这三种模式的不同之处如下:BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动:<Connector port="8080" protocol=&quo
22
2020
10

请解释servlet如何完成生命周期?

第一次访问Servlet,我们发现init()和service()都被调用了第二次访问Servlet,service()被调用了第三次访问Servlet,还是service()被调用了当我们关闭Tomcat服务器的时候,destroy()被调用了!Servlet生命周期可分为5个步骤加载Servlet。当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例;初始化。当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象;处理服务。当浏览器访
22
2020
10

请解释将Tomcat作为一个Windows 服务运行会带来哪些好处?

1)自动启动:对于需要在维护后远程重新启动系统的环境来说,这是至关重要的;2)启动无活动用户登录的服务器:Tomcat通常在刀片服务器上运行,这些服务器甚至可能没有一个活动监视器,Windows服务可以在没有活动用户的情况下启动;3)安全性:在Windows服务下的Tomcat可以让您在一个特殊的系统帐户下运行它,这个账户可以从其他用户帐户中得到保护。
05
2020
04

打印类的加载情况及对象的回收情况

这个可以通过配置JVM的启动参数,打印这些信息(到屏幕(默认也会到catalina.log中)或者文件),具体参数如下: -XX:+PrintGC:输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs] -XX:+PrintGCDetails:输出形式:[GC [DefNew: 8614K->781K(9088
05
2020
04

监视Tomcat的内存使用情况

使用JDK自带的jconsole可以比较明了的看到内存的使用情况,线程的状态,当前加载的类的总量等;JDK自带的jvisualvm可以下载插件(如GC等),可以查看更丰富的信息。如果是分析本地的Tomcat的话,还可以进行内存抽样等,检查每个类的使用情况
05
2020
04

关于Tomcat的session数目

这个可以直接从Tomcat的web管理界面去查看即可 ;或者借助于第三方工具Lambda Probe来查看,它相对于Tomcat自带的管理稍微多了点功能,但也不多 ;
05
2020
04

专业点的分析工具有

IBM ISA,JProfiler、probe 等,具体监控及分析方式去网上搜索即可
05
2020
04

添加JMS远程监控

对于部署在局域网内其它机器上的Tomcat,可以打开JMX监控端口,局域网其它机器就可以通过这个端口查看一些常用的参数(但一些比较复杂的功能不支持),同样是在JVM启动参数中配置即可,配置如下: -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.71.38 设置JV