`

tomcat相关的问题--面试题

 
阅读更多


一、Tomcat的缺省是多少,怎么修改

Tomcat的缺省端口号是8080.
修改Tomcat端口号:
1.找到Tomcat目录下的conf文件夹
2.进入conf文件夹里面找到server.xml文件
3.打开server.xml文件
4.在server.xml文件里面找到下列信息
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” />
5.把port=”8080″改成port=”8888″,并且保存
6.启动Tomcat,并且在IE浏览器里面的地址栏输入http://127.0.0.1:8888/

7、tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。
  NIO模型是内置的,调用很方便,只需要将上面配置文件中protocol修改成 org.apache.coyote.http11.Http11NioProtocol,重启即可生效。如下面的参数配置,默认的是HTTP/1.1。
    <Connector port=”8080″  
               protocol=”org.apache.coyote.http11.Http11NioProtocol” 
               connectionTimeout=”20000″ 
               redirectPort=”8443″  
               maxThreads=”500″  
               minSpareThreads=”20″ 
               acceptCount=”100″
               disableUploadTimeout=”true”
               enableLookups=”false”  
               URIEncoding=”UTF-8″ />

二、tomcat 如何优化?

1、优化连接配置.这里以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个左右。

useURIValidationHack:

我们来看一下tomcat中的一段源码:

【security】

        if (connector.getUseURIValidationHack()) {

            String uri = validate(request.getRequestURI());

            if (uri == null) {

                res.setStatus(400);

                res.setMessage(“Invalid URI”);

                throw new IOException(“Invalid URI”);

            } else {

                req.requestURI().setString(uri);

                // Redoing the URI decoding

                req.decodedURI().duplicate(req.requestURI());

                req.getURLDecoder().convert(req.decodedURI(), true);

可以看到如果把useURIValidationHack设成”false”,可以减少它对一些url的不必要的检查从而减省开销。

enableLookups=”false” : 为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值。

disableUploadTimeout :类似于Apache中的keeyalive一样

给Tomcat配置gzip压缩(HTTP压缩)功能

compression=”on” compressionMinSize=”2048″

compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”

HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

1)compression=”on” 打开压缩功能

2)compressionMinSize=”2048″ 启用压缩的输出内容大小,这里面默认为2KB

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

4)compressableMimeType=”text/html,text/xml” 压缩类型

最后不要忘了把8443端口的地方也加上同样的配置,因为如果我们走https协议的话,我们将会用到8443端口这个段的配置,对吧?

<!–enable tomcat ssl–>

    <Connector port=”8443″ protocol=”HTTP/1.1″

               URIEncoding=”UTF-8″  minSpareThreads=”25″ maxSpareThreads=”75″

          enableLookups=”false” disableUploadTimeout=”true” connectionTimeout=”20000″

          acceptCount=”300″  maxThreads=”300″ maxProcessors=”1000″ minProcessors=”5″

          useURIValidationHack=”false”

                    compression=”on” compressionMinSize=”2048″

                    compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”

                SSLEnabled=”true”

           scheme=”https” secure=”true”

           clientAuth=”false” sslProtocol=”TLS”

           keystoreFile=”d:/tomcat2/conf/shnlap93.jks” keystorePass=”aaaaaa”

      />

好了,所有的Tomcat优化的地方都加上了。

2、优化JDK
Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS=”‘$JAVA_OPTS” -Xms[初始化内存大小] -Xmx[可以使用的最大内存]

设置环境变量:export JAVA_OPTS=””$JAVA_OPTS” -Xms[初始化内存大小] -Xmx[可以使用的最大内存]”
一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。建议设置为70%;建议设置[[初始化内存大小]等于[可以使用的最大内存],这样可以减少平凡分配堆而降低性能。
本例使用加入环境变量的方式:
# vi /etc/profile
加入:export JAVA_OPTS=””$JAVA_OPTS” -Xms700 —Xmx700
# source /etc/profile

【参数说明】

-Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的 快一点,但是也可能会导致机器暂时间变慢。

-Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占 用更多的内存,超出了这个设置值,就会抛出OutOfMemory 异常。

-Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。

-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64 。

-XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

三、tomcat 有那几种Connector 运行模式?

tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。

1)bio

默认的模式,性能非常低下,没有经过任何优化处理和支持.

2)nio

利用java的异步io护理技术,no blocking IO技术.

想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

<Connector port=”80″ protocol=”org.apache.coyote.http11.Http11NioProtocol”
    connectionTimeout=”20000″
    URIEncoding=”UTF-8″
    useBodyEncodingForURI=”true”
    enableLookups=”false”
    redirectPort=”8443″ />

启动后,就可以生效。

3)apr

安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.

必须要安装apr和native,直接启动就支持apr。下面的修改纯属多余,仅供大家扩充知识,但仍然需要安装apr和native

如nio修改模式,修改protocol为org.apache.coyote.http11.Http11AprProtocol


原文出处:http://www.jfox.info/guan-yu-Tomcat-he-Tomcat-de-mian-shi-wen-ti
分享到:
评论

相关推荐

    Java Tomcat面试题

    Java Tomcat面试题 Tomcat是什么? ---------------- Tomcat是Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合...

    Java面试题资料合集-44套.rar

    java面试-BIO,NIO,AIO,Netty面试题 35道 ...java面试-Tomcat面试题 14道 java面试-Zookeeper面试题 20道 java面试-大数据面试题 100道 java面试-多线程面试59题(含答案) java面试-设计模式面试题 14道

    【BAT必备】tomcat面试题

    ### Tomcat面试题详解 #### 一、Tomcat基础知识 **1. 什么是Tomcat?** Tomcat是一款开源的Servlet容器,它实现了Servlet规范,并且提供了HTTP服务器功能。Tomcat可以作为独立的应用服务器运行,也可以与Apache等...

    2024年java面试题-tomcat面试题

    ### Tomcat面试题详解 #### 1. Tomcat的缺省端口是多少,如何修改? - **缺省端口**:Tomcat服务器的默认监听端口是8080。 - **修改方法**: 1. **定位配置文件**:在Tomcat安装目录下找到`conf`文件夹。 2. **...

    Tomcat面试题 14道.pdf

    Tomcat 面试题 14 道 本文将对 Tomcat 面试题进行解析,涵盖 Tomcat 的基础知识、配置文件、Connector 运行模式、部署方式、Servlet 实例创建原理等多个方面。 一、Tomcat 的基础知识 Tomcat 是一个基于 Java ...

    202310-Tomcat面试题(2023最新版)思维导图.zip

    - Tomcat调优 - 数据库调优 10. 安全: - XSS、CSRF、SQL注入等常见安全漏洞 - Spring Security安全框架 以上是Java后端必会的所有技能,掌握这些技能可以帮助开发人员在Java后端开发领域更加得心应手。

    15道经典的Tomcat面试题!.zip

    15道经典的Tomcat面试题!

    Java大厂面试题-阿里篇 视频教程 下载 视频教程 下载 因为太大存百度云盘3.zip

    因为字数限制 下面目录只是部分 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试...大厂面试题第一季-阿里篇-010-年薪50W的程序员如何优化Tomcat-3.mp4

    Java大厂面试题-阿里篇 视频教程 下载 视频教程 下载 因为太大存百度云盘4.zip

    因为字数限制 下面目录只是部分 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试...大厂面试题第一季-阿里篇-010-年薪50W的程序员如何优化Tomcat-3.mp4

    Java大厂面试题-阿里篇 视频教程 下载 视频教程 下载 因为太大存百度云盘1.zip

    因为字数限制 下面目录只是部分 大厂面试题第一季-阿里篇-001-P7程序员面试这样解题数据库索引-1.mp4 大厂面试题第一季-阿里篇-001-P7程序员面试...大厂面试题第一季-阿里篇-010-年薪50W的程序员如何优化Tomcat-3.mp4

    servlet+tomcat面试题及答案解析.rar

    以下是一些常见的Servlet和Tomcat相关的面试题及答案解析: 1. **什么是Servlet?** Servlet是Java编程语言中用于扩展服务器功能的接口,由Java Servlet API定义。它允许程序员编写运行在服务器端,处理客户端请求...

    2023最新JAVA面试题集

    目录: 2023年最新版--Java+最常见的+200++面试题汇总+答案总结汇总 阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/...Tomcat面试题 14道 Zookeeper面试题(含答案)

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...

    Tomcat面试专题及答案.pdf

    ### Tomcat面试专题知识点 #### 1. Tomcat的基本概念和使用 Tomcat是Apache Jakarta项目中的一个核心项目,是一个免费的开放源代码的Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范。Tomcat...

    10-Tomcat面试题.docx

    Tomcat面试题知识点总结 Tomcat是什么? Tomcat是Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用...

    Tomcat面试题(相关面试问题整合)

    【Tomcat面试题详解】 1. **什么是Tomcat?** Tomcat是一个开源的、免费的Web应用服务器,由Apache软件基金会开发。它是Java Servlet和JavaServer Pages (JSP) 技术的标准实现,用于运行Java Web应用程序。 2. **...

    服务器Tomcat面试题

    服务器Tomcat面试题 SERVER Tomcat 是 Java Web 服务器的开源实现,它提供了 HTTP 服务器、Servlet Container、JSP Engine 等功能。本文将为您提供 Tomcat 面试题相关的知识点。 1. Tomcat 的缺省端口是多少,...

    Tomcat面试题(2022最新版)

    ### Tomcat概述 Tomcat是Apache软件基金会Jakarta项目中的一个关键组成部分,它是一个免费且开源的Web应用服务器。由于其轻量级的特点,在中小规模系统或是并发访问量不大的场景下得到了广泛应用,尤其适合于开发和...

    【面试资料】-(机构内训资料)Tomcat面试题.zip

    【标题】"【面试资料】-(机构内训资料)Tomcat面试题.zip" 提供的是与Tomcat服务器相关的面试问题集,这通常包括了Tomcat的基础知识、配置、性能优化以及常见问题等内容。Tomcat是一款广泛使用的开源Java Servlet...

Global site tag (gtag.js) - Google Analytics