Tomcat知多少?

Java开发过程中,大家用得最多的就是Tomcat,如下我就总结下Tomcat常见问题。

1、Tomcat 的缺省端口是多少,怎么修改?

答:找到 Tomcat 目录下的 conf 文件夹 进入 conf 文件夹里面找到 server.xml 文件→打开 server.xml 文件→在 server.xml 文件里面找到下列信息

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" uriEncoding="utf-8"/>
port="8080"  可以 改成你想要的端口
2、 Tomcat 有几种部署方式?
答:① 直接把 Web 项目放在 webapps 下, Tomcat 会自动将其部署。②在 server.xml 文件上配置 <Context>节点,设置相关的属性即可。 通过 Catalina 来进行配置 : 进入到 conf\Catalina\localhost 文件下,创建一个 xml 文件,该文件的名字就是站点的名字。
3、tomcat 如何优化?
答: 优化连接配置 . 这里以 tomcat7 的参数配置为例,需要修改 conf/server.xml
文件,修改连接数,关闭客户端 dns 查询。
参数解释:
URIEncoding=”UTF-8″ :  使得 tomcat 可以解析含有中文名的文件的 url ,真方
便,不像 apache 里还有搞个 mod_encoding ,还要手工编译
maxSpareThreads : 如果空闲状态的线程数多于设置的数目,则将这些线程中
止,减少这个池中的线程总数。
minSpareThreads : 最小备用线程数, tomcat 启动时的初始化的线程数。
enableLookups : 这个功效和 Apache 中的 HostnameLookups 一样,设为关闭。
connectionTimeout : connectionTimeout 为网络连接超时时间毫秒数。
maxThreads : maxThreads Tomcat 使用线程来处理接收的每个请求。这个值表
Tomcat 可创建的最大的线程数,即最大并发数。
acceptCount : acceptCount 是当线程数达到 maxThreads 后,后续请求会被放
入一个等待队列,这个 acceptCount 是这个队列的大小,如果这个队列也满了,
就直接 refuse connection
maxProcessors 与 minProcessors : Java 中线程是程序运行时的路径,是在
一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地
址空间。多线程帮助程序员写出 CPU 最 大利用率的高效程序,使空闲时间保
持最低,从而接受更多的请求。
通常 Windows 1000 个左右, Linux 2000 个左右。
4、监视 Tomcat 的内存使用情况
答:使用 JDK 自带的 jconsole 可以比较明了的看到内存的使用情况,线程的状态,
当前加载的类的总量等;
JDK 自带的 jvisualvm 可以下载插件(如 GC 等),可以查看更丰富的信息。如
果是分析本地的 Tomcat 的话,还可以进行内存抽样等,检查每个类的使用情况
5、 打印类的加载情况及对象的回收情况
答:
这个可以通过配置 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(9088K),
0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC
[DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured:
112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K),
0.0436268 secs]
-XX:+PrintGCTimeStamps -XX:+PrintGC PrintGCTimeStamps 可与上面两个
混合使用,输出形式: 11.851: [GC 98328K->93620K(130112K), 0.0082960
secs]
-XX:+PrintGCApplicationConcurrentTime :打印每次垃圾回收前,程序未中断
的执行时间。可与上面混合使用。输出形式: Application time: 0.5291524
seconds
-XX:+PrintGCApplicationStoppedTime :打印垃圾回收期间程序暂停的时间。可
与上面混合使用。输出形式: Total time for which application threads were
stopped: 0.0468229 seconds
-XX:PrintHeapAtGC: 打印 GC 前后的详细堆栈信息
-Xloggc:filename: 与上面几个配合使用,把相关日志信息记录到文件以便分析
-verbose:class 监视加载的类的情况
-verbose:gc 在虚拟机发生内存回收时在输出设备显示信息
-verbose:jni 输出 native 方法调用的相关情况,一般用于诊断 jni 调用错误信息
6、Tomcat 工作原理?
答: Tomcat 是一个 JSP/Servlet 容器。其作为 Servlet 容器,有三种工作模式:独立
Servlet 容器、进程内的 Servlet 容器和进程外的 Servlet 容器。
进入 Tomcat 的请求可以根据 Tomcat 的工作模式分为如下两类:
Tomcat 作为应用程序服务器:请求来自于前端的 web 服务器,这可能是 Apache,
IIS, Nginx 等;
Tomcat 作为独立服务器:请求来自于 web 浏览器;
最后,如果想彻彻底通透Tomcat 建议大家还是找一本书去看,这个时代缺乏的是静心看书的中年人。

Guess you like

Origin blog.csdn.net/LB_Captain/article/details/119612309