tomcat面试题

tomcat面试题1.tomcat给你你怎样去调优?1.JVM参数调优:-Xms表示JVM初始化堆的大小,-Xmx表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中,设置JAVA_OPTS=’-Xms256m-Xmx512m’,表示

大家好,又见面了,我是你们的朋友全栈君。

1.tomcat给你你怎样去调优?

1. JVM参数调优:-Xms<size> 表示JVM初始化堆的大小,-Xmx<size>表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中,设置JAVA_OPTS=’-Xms256m -Xmx512m’,表示初始化内存为256MB,可以使用的最大内存为512MB。 
2. 禁用DNS查询 
 当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值: 
Tomcat4 

<Connector className=”org.apache.coyote.tomcat4.CoyoteConnector” port=”80″ minProcessors=”5″ maxProcessors=”75″ enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ debug=”0″ connectionTimeout=”20000″ useURIValidationHack=”false” disableUploadTimeout=”true” /> 

Tomcat5 

<Connector port=”80″ maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″ enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ debug=”0″ connectionTimeout=”20000″ disableUploadTimeout=”true”/> 
3. 调整线程数 
通过应用程序的连接器(Connector)进行性能控制的的参数是创建的处理请求的线程数。Tomcat使用线程池加速响应速度来处理请求。在Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。 
    Tomcat4中可以通过修改minProcessors和maxProcessors的值来控制线程数。这些值在安装后就已经设定为默认值并且是足够使用的,但是随着站点的扩容而改大这些值。minProcessors服务器启动时创建的处理请求的线程数应该足够处理一个小量的负载。也就是说,如果一天内每秒仅发生5次单击事件,并且每个请求任务处理需要1秒钟,那么预先设置线程数为5就足够了。但在你的站点访问量较大时就需要设置更大的线程数,指定为参数maxProcessors的值。maxProcessors的值也是有上限的,应防止流量不可控制(或者恶意的服务攻击),从而导致超出了虚拟机使用内存的大小。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。 
      在Tomcat5对这些参数进行了调整,请看下面属性: 
maxThreads    Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。 
acceptCount    指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。 
connnectionTimeout    网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 
minSpareThreads    Tomcat初始化时创建的线程数。 

maxSpareThreads     一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。 
     最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况。在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的web站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。 

2.tomcat中的文件你主要写了些什么。

在配置文件配置tomcat环境
SET JAVA_HOME=C://
修改最大内存
修改线程数
tomcat下有9个目录,分别是bin,common,conf,logs,server,shared,temp,webapps,work 目录,现在对每一目录做介绍。




  tomcat根目录在tomcat中叫<CATALINA_HOME>,文章中把tomcat解压后在c:/下。




  1.<CATALINA_HOME>/bin: 存放各种平台下启动和关闭Tomcat的脚本文件。其中有个档是catalina.bat,打开这个windos配置文件,在非注释行加入JDK路径,例如 : SET JAVA_HOME=C:j2sdk1.4.2_06 保存后,就配置好tomcat环境了。 startup.bat是windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件。




  2.<CATALINA_HOME>/common: 在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR?。




  3.<CATALINA_HOME>/shared: 在shared目录下的lib目录,存放所有web应用能
访问的,但Tomcat不能访问的JAR?。




  4.<CATALINA_HOME>/server: 在server/webapps
目录中,存放Tomcat自带的两个APP-admin和manager应用,使用来管理Tomcat-web服务用的。在server/lib目录中,存放tomcat服务器所需要的各,web应用不能访问种jar?。




  5.<CATALINA_HOME>/work : Tomcat把各种由jsp生成的servlet文件放在这个目录下。work这个文件夹下面的东西建议你去看看就可以明白了 那是JSP文件编译成.java->
.classes




  6.<CATALINA_HOME>/temp : 临时活页夹
,Tomcat运行时候存放临时文件用的。




  7.<CATALINA_HOME>/logs
: 存放Tomcat的日志文件




  8.<CATALINA_HOME>/conf
: Tomcat的各种配置文件, tomcat启动的时候需要读取的配置文件:server.xml(tomcat主要配置文件)、
web.xml
和tomcatat-users.xml、catalina.policy(安全策略文件)等。修改了以后需要重启tomcat才能生效.最重要的是 server.xml;配置tomcat组件的
XML文件
server.XML其中包括




  I.顶层类元素[Top Level Elements]: 位于整个配置文件的顶层, 包括<Server>和<Service>;




  II.连接器类元素[Connectors ]: 客户和服务(容器类元素)间的通讯接口。接受客户请求,返回响应结果;<Connector>




  II.容器类元素[Containers]: 处理客户请求并且生成响应结果,包含3个:<Engine> <Host> <Context>




  IV.嵌套类元素[Nested Components]: 可以加入到容器中的元素,包括:<logger> <Valve><Realm>等




  一个<Server>包含一个或多个<Service>,一个<Service>包含唯一一个<Engine>和一个或多个<Connector>,多个<Connector>共享一个<Engine>;一个<Engine>包含多个<Host>,每个<Host>定义一个虚拟主机,包含一个或多个web应用<Context>; <Context>元素是代表一个在虚拟主机上运行的Web应用。<Context>标签的描述




  Please note that for tomcat 5.x, unlike tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. Instead, put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.


    server.xml配置简介    


   下面是这个文件中的基本配置信息,更具体的配置信息见tomcat的文档    


   server:    


   port    指定一个端口,这个端口负责监听关闭tomcat的请求    


   shutdown    指定向端口发送的命令字符串    


   service:    


   name    指定service的名字    


   Connector    (表示客户端和service之间的连接):    


   port    指定
服务器端
要创建的端口号,并在这个断口监听来自客户端的请求    


   minProcessors    服务器启动时创建的处理请求的线程数    


   maxProcessors    最大可以创建的处理请求的线程数    


   enableLookups    如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址    


   redirectPort    指定服务器正在处理
http请求
时收到了一个SSL传输请求后重定向的端口号    


   acceptCount    指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理    


   connectionTimeout    指定超时的时间数(以
毫秒
为单位)    


   Engine    (表示指定service中的请求处理机,接收和处理来自Connector的请求):    


   defaultHost    指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的    


   Context    (表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范):    


   docBase    应用程序的路径或者是WAR文件存放的路径    


   path    表示此web应用程序的url的前缀,这样请求的url为
http://localhost:8080/path/
****    


   reloadable    这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/
WEB-INF
/lib    和/
WEB-INF
/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序    


   host    (表示一个虚拟主机):    


   name    指定主机名    


   appBase    应用程序基本目录,即存放应用程序的目录    


   unpackWARs    如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序    


   Logger    (表示日志,调试和错误信息):    


   className    指定logger使用的类名,此类必须实现org.apache.catalina.Logger    接口    


   prefix    指定
log文件
的前缀    


   suffix    指定
log文件
的后缀    


   timestamp    如果为true,则
log文件
名中要加入时间,如下例:localhost_log.2001-10-04.txt    


   Realm    (表示存放用户名,密码及role的数据库):    


   className    指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口    


   Valve    (功能与Logger差不多,其prefix和suffix属性解释和Logger    中的一样):    


   className    指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息    


   directory    指定log文件存放的位置    


   pattern    有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多    


   


   注意:    


   默认的server.xml中,Realm元素只设置了一个className属性,但此文件中也包含几个通过JDBC连接到数据库进行验证的示例(被注释掉了),通过Realm元素我们可以实现容器安全管理(Container    Managed    Security)。    


   


   还有一些元素,如Parameter,loader,你可以通过tomcat的文档获取这些元素的信息。 




  9.<CATALINA_HOME>/webapps: web应用的发布目录,把 java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了。


在绝大多数资料上,都只提到了conf/server.xml以及context下面的
WEB-INF
/
web.xml
,但我发现,有时,在server.xml上面没有配置的内容,tomcat也运行着,后来发现,原来除了这两处配置外,还有一处重要的配置文件,




在TOMCAT_HOME/conf/Catalina/下面(Catalina是server.xml里的engine的名称),也是一些关键的配置文件,每个主机(server.xml里的Host),在这里有一个目录,每个主机(Host)里的一个context在该主机目录下有一个对应的
xml文件
,比如,根目录对应ROOT.xml,其它名为test的context对应test.xml。




TOMCAT_HOME/conf/Catalina/hostname/context1.xml 相当于在server.xml中的Catalina引擎下的hostname主机下配置context1WEB应用。在目录里配置,和在 server.xml里配置效果是一样的,Tomcat自带的admin,自动将所有context转到目录下配置,而不是集中在server.xml。


     10、如何新建
虚拟目录



修改 Tomcat安装目录//conf//server.xml ,在下列行前


</Host>


</Engine>


添加下列行:


<Context path=”/my” docBase=”c://myjsp//test” debug=”0″ reloadable=”true”>


</Context>


表示增加
虚拟目录
my,对应物理目录位置c://myjsp//test,若存在c://myjsp//test//hello.jsp,则下列地址可访问:


htpp://localhost:8080/my/hello.jsp


修改server.xml后,需要重新启动tomcat.


3.tomcat那里设置访问线程数目。

在tomcat配置文件server.xml中的<Connector />配置中,和连接数相关的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。tomcat5中的配置示例:
    <Connector port=”8080″
               maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
               enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
               debug=”0″ connectionTimeout=”20000″
               disableUploadTimeout=”true” />
对于其他端口的侦听配置,以此类推。
4.怎样加大tomcat的内存。

Windows下,在文件/bin/catalina.bat,Linux下,在文件/bin/catalina.sh的前面,增加如下设置:


JAVA_OPTS=-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】





JAVA_OPTS 这个是,TOMCAT已经定义好的,名,你只需要将


JAVA_OPTS=-Xms256m -Xmx512m





这句话,添加到


catalina.bat(windows)


set JAVA_OPTS=-Xms256m -Xmx512m





catalina.sh(linux)


JAVA_OPTS=-Xms256m -Xmx512m





或者直接修改start.bat或start.sh文件也行,因为start文件会调用catalina文件,如:


如果是windows环境,在startup.bat中加入set JAVA_OPTS=-Xms256m -Xmx1024m


如果是linux则在startup.sh中加入JAVA_OPTS=-Xms256m -Xmx1024m

5.Tomcat有几种部署方式

tomcat中四种部署项目的方法

第一种方法:

在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: 
<Context path=”/hello” docBase=”D:/eclipse3.2.2/forwebtoolsworkspacehello/WebRoot” debug=”0″ privileged=”true”> 
</Context> 
至于Context 节点属性,可详细见相关文档。

第二种方法:

将web项目文件件拷贝到webapps 目录中。

第三种方法:

很灵活,在conf目录中,新建 Catalina(注意大小写)\localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了,该xml文件的内容为: 
<Context path=”/hello” docBase=”D:eclipse3.2.2forwebtoolsworkspacehelloWebRoot” debug=”0″ privileged=”true”> 
</Context>

第3个方法有个优点,可以定义别名。服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效。

第2、3还有优点,可以定义一些个性配置,如数据源的配置等。

第四种办法,:

可以用tomcat在线后台管理器,一般tomcat都打开了,直接上传war就可以

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134240.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • idea2022.01.13激活码永久[最新免费获取]2022.02.05

    (idea2022.01.13激活码永久)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html76VF8VOVJM-eyJsaWNlbnNlSW…

  • XGBoost使用教程(纯xgboost方法)一

    XGBoost使用教程(纯xgboost方法)一“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”一、导入必要的工具包#导入必要的工具包importxgboostasxgb#计算分类正确率fromsklearn.metricsimportaccuracy_score二、数据读取XGBo…

  • BZOJ2440(全然平方数)二分+莫比乌斯容斥

    BZOJ2440(全然平方数)二分+莫比乌斯容斥

  • mysql通配符转义_转义MySQL通配符

    mysql通配符转义_转义MySQL通配符小编典典_而%不是通配符在MySQL一般,而且不应该被转义,将它们放入普通的字符串字面量的目的。mysql_real_escape_string是正确的,足以满足此目的。addcslashes不应该使用。_并且%仅在LIKE-matching上下文中是特殊的。当您想为LIKE语句中的文字使用准备字符串时,要100%匹配百分之一百,而不仅仅是以100开头的任何字符串,都需要担心两种转义。首先是喜欢转…

  • 域名与优化之间的联系[通俗易懂]

    域名与优化之间的联系[通俗易懂]什么域名有利于网站优化?域名与网站优化有什么的关系?域名与网站优化有关系吗?很多人不知道域名的好坏其实与网站优化也是有着联系的,什么样的域名对于网站优化有好处呢?今天这篇文章外链代发SEO就来给各位介绍一下关于域名与网站优化的关系。可能有的新站长对于域名与网站优化之间的关系不是很清楚,其实域名的挑选对网站企业的发展有着重要的影响和含义,一个好的域名不只使网民简单记,并且对企业的品牌宣扬有着非常重…

  • 函数指针和指针函数用法和区别

    函数指针和指针函数用法和区别前言函数指针和指针函数,在学习C语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。今天这里只…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号