Tomcat的优化经验

 1、Tomcat常见面试题

Tomcat作为Web服务器,它的处理性能直接关系到用户体验,下面是几种常见的优化措施:

1)解释什么是Jasper?

  Jasper是Tomcat的JSP引擎

  它解析JSP文件,将它们编译成JAVA代码作为servlet

  在运行时,Jasper允许自动检测JSP文件的更改并重新编译它们

  2)请说明select * from tab的输出结果是什么?

  显示数据库中的默认表

  3)请解释如何配置Tomcat来使用IIS和NTLM ?

  必须遵循isapi_redirector.dll的标准指令

  配置IIS使用“集成windows验证”

  确保在服务器.xml中您已经禁用了tomcat身份验证

  <Connector port = “8009” enableLooksup = “false” redirect port = “8443” protocol = “AJP/1.3” tomcatAuthentication = “false” />

  4)请解释一下什么时候可以使用“.”,什么时候可以使用“[]”?

  如果正在运行bean属性,请使用“.”操作符,如果正在执行映射值或数组索引,则首选使用“[]”运算符。虽然两个运算符可以互换。

  5)请解释Tomcat的默认端口是什么?

  Tomcat的默认端口是8080。在本地机器上初始化Tomcat之后,您可以验证Tomcat是否正在运行URL:http://localhost:8080

  6)请解释Tomcat中使用的连接器是什么?

  在Tomcat中,使用了两种类型的连接器:

  HTTP连接器:它有许多可以更改的属性,以确定它的工作方式和访问功能,如重定向和代理转发

  AJP连接器:它以与HTTP连接器相同的方式工作,但是他们使用的是HTTP的AJP协议。AJP连接器通常通过插件技术mod_jk在Tomcat中实现

  7)请阐述Catalina的配置文件有哪些?

  Catalina包含的配置文件有:

  ·policy

  ·properties

  ·properties

  ·xml

  ·xml

  ·Tomcat-users.xml

  ·xml

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

  运行Tomcat作为windows服务带来了以下的好处:

  自动启动:对于需要在维护后远程重新启动系统的环境来说,这是至关重要的

  启动无活动用户登录的服务器:Tomcat通常在刀片服务器上运行,这些服务器甚至可能没有一个活动监视器,Windows服务可以在没有活动用户的情况下启动

  安全性:在Windows服务下的Tomcat可以让您在一个特殊的系统帐户下运行它,这个账户可以从其他用户帐户中得到保护

  9)解释何时在Tomcat使用SSL ?

  当你将Tomcat作为独立的web服务器运行时,需使用Tomcat来处理连接

  10)解释如何使用WAR文件部署web应用程序?

  在Tomcat的web应用程序目录下,jsp、servlet和它们的支持文件被放置在适当的子目录中。你可以将web应用程序目录下的所有文件压缩到一个压缩文件中,以.war文件扩展名结束。你可以通过在webapps目录中放置WAR文件来执行web应用程序。当一个web服务器开始执行时,它会将WAR文件的内容提取到适当的webapps子目录中。

  11)解释什么是Tomcat Valve?

  Tomcat Valve——Tomcat 4引入的新技术,它允许您将Java类的实例链接到一个特定的Catalina容器。

  12)说明Tomcat配置了多少个Valve?

  Tomcat配置了四种类型的Valve:

  ·访问日志

  ·远程地址过滤

  ·远程主机过滤器

  ·客户请求记录器

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

  在Tomcat上运行的典型servlet生命周期如下:

  ·Tomcat通过它的其中一个连接器接收来自客户端的请求

  ·进程请求Tomcat将此请求映射为适当的

  ·一旦请求被定向到适当的servlet,Tomcat就会验证servlet类是否已经加载。如果不是Tomcat将servlet包装成Java字节码,这是由JVM执行的,并形成servlet的实例

  ·Tomcat通过调用它的init来启动servlet,它包含能够筛选Tomcat配置文件并相应地采取行动的代码,并声明它可能需要的任何资源

  ·一旦servlet启动,Tomcat就可以调用servlet的服务方法来进行请求

  ·在servlet的生命周期中,Tomcat和servlet可以通过使用侦听器类来进行协调或通信,从而跟踪各种状态变化的servlet

  ·删除servlet,Tomcat调用servlet销毁方法

  14)请说明NAT协议的目的是什么?

  NAT协议的目的是将私有IP地址从公共IP地址隐藏起来,并给组织提供一定的安全性。

  15)请解释一下MAC代表什么?

  MAC意味着中访问控制

  16)请解释什么是Tomcat Coyote ?

  Tom coyote是基于HTTP / 1.1规范的HTTP连接器,通过监听TCP / IP端口并将请求发送回请求客户端,向Tomcat引擎接收和传输web请求。

2、Tomcat的优化经验

一、掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存


二、服务器资源


  服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
  (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。
  (2) 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。
  (3) 硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。


三、利用缓存和压缩


  对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
  另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
  除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。


 四、采用集群


  单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。可以参考之前写的《利用nginx+tomcat+memcached组建web服务器负载均衡》。




  这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。

<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" /> 

  

posted @ 2018-03-05 12:40  活的潇洒80  阅读(309)  评论(0编辑  收藏  举报