ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Tomcat面试题

2022-05-10 12:02:26  阅读:146  来源: 互联网

标签:xml 文件 面试题 请求 Tomcat 线程 默认值


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

1)找到 Tomcat 目录下的conf 文件夹

2)进入 conf 文件夹里面找到 server.xml 文件

3)打开 server.xml 文件

4)在 server.xml 文件里面找到下列信息 port="8080"改成你想要的端口

2、tomcat 有哪几种 Connector 运行模式(优化)?

bio:传统的Java I/O操作,同步且阻塞IO。

maxThreads="150"//Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最 大的线程数。默认值200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。

minSpareThreads="25"—Tomcat初始化时创建的线程数。默认值4。如果当前没有空闲线 程,且没有超过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由 此值设置。

maxSpareThreads="75"—一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线 程。默认值50。一旦创建的线程超过此数值,Tomcat会关闭不再需要的线程。线程数可以大致上 用 “同时在线人数每秒用户操作次数系统平均操作时间” 来计算。

acceptCount="100"—指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队 列中的请求数,超过这个数的请求将不予处理。默认值10。如果当前可用线程数为0,则将请求放入处理队列中。这个值限定了请求队列的大小,超过这个数值的请求将不予处理。

connectionTimeout="20000" —网络连接超时,默认值20000,单位:毫秒。设置为0表示永 不超时,这样设置有隐患的。通常可设置为30000毫秒。

nio:JDK1.4开始支持,同步阻塞或同步非阻塞IO。

指定使用NIO模型来接受HTTP请求

protocol="org.apache.coyote.http11.Http11NioProtocol" 指定使用NIO模型来接受 HTTP请求。默认是BlockingIO,配置为protocol="HTTP/1.1" acceptorThreadCount="2" 使用NIO模型时接收线程的数目

aio(nio.2):JDK7开始支持,异步非阻塞IO。

apr:Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络 传输操作,从而大大地 提高Tomcat对静态文件的处理性能。

<!--
<Connector connectionTimeout="20000" port="8000" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>
-->
     <!-- protocol 启用 nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步 io) -->
     <!-- minProcessors最小空闲连接线程数-->
     <!-- maxProcessors最大连接线程数-->
     <!-- acceptCount允许的最大连接数,应大于等于maxProcessors-->
     <!-- enableLookups 如果为true,requst.getRemoteHost会执行DNS查找,反向解析 ip对应域名或主机名-->

    <Connector port="8080"
         protocol="org.apache.coyote.http11.Http11NioProtocol"
         connectionTimeout="20000"
         redirectPort="8443"
         maxThreads="500"
         minSpareThreads="100"
         maxSpareThreads="200"
         acceptCount="200"
         enableLookups="false"
     />

其他配置

maxHttpHeaderSize="8192" http请求头信息的最大程度,超过此长度的部分不予处理。一般 8K。

URIEncoding="UTF-8" 指定Tomcat容器的URL编码格式。

disableUploadTimeout="true" 上传时是否使用超时机制

enableLookups="false"–是否反查域名,默认值为true。为了提高处理能力,应设置为 false

compression="on" 打开压缩功能

compressionMinSize="10240" 启用压缩的输出内容大小,默认为2KB

noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩

 

 

3、Tomcat 有几种部署方式?

1)直接把 Web 项目放在webapps 下,Tomcat 会自动将其部署

2)在 server.xml 文件上配置<Context>节点,设置相关的属性即可

3)通过 Catalina 来进行配置:进入到 conf\Catalina\localhost 文件下,创建一个 xml 文件,该文件的名字就是站点的名字。

编写 XML 的方式来进行设置。

 

4、tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

当容器启动时,会读取在webapps 目录下所有的 web 应用中的 web.xml文 件,然后对 xml 文件进行解析,

并读取 servlet 注册信息。然后,将每个应用中注册的 servlet 类都进行加载, 并通过反射的方式实例化。

(有时候也是在第一次请求时实例化)在 servlet 注册时加上如果为正数,则在 一开始就实例化,

如果不写或为负数,则第一次请求实例化

标签:xml,文件,面试题,请求,Tomcat,线程,默认值
来源: https://www.cnblogs.com/javamianshizhan/p/16252884.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有