(面试)Tomcat优化有哪些方式?

1.关闭AJP端口8009
     在tomcat前再使用web服务器时,即便tomcat提供的都是静态资源文件,情况都要比直接使用http连接差的多,如果确实有需要集成前置服务器,走AJP协议要比http协议性能更好。通常前置服务器有nginx做静态伺服器和方向代理足矣,无需使用AJP,不用的资源直接关掉即可。

2.关闭access_log
    外置tomcat服务器server.xml中会输出access_log日志,基本没有什么价值,可以关闭了。springboot中内置的tomcat默认就是关闭access_log的。

<Valve className="org.apache.catalina.valves.AccessLogValve"  directory="logs"  prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

3.关闭无用的servlet
有些无用的servlet配置也可以去掉,例如未使用jsp可以关掉相关的配置。

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
    <param-name>fork</param-name>
    <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>xpoweredBy</param-name>
    <param-value>false</param-value>
  </init-param>
  <load-on-startup>3</load-on-startup>
</servlet>

4.war包与tomcat分离开
不要直接把war包上传到webapps下发布,应该将war包放到指定的目录,并在conf/Catalina/localhost目录下添加相应的配置文件,内容如下。

<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="D:\demo.war" />

5.生产环境禁止启用属性的reloadable=true
reloadable是需要线程监听程序文件修改的,然后重新加载web应用,默认值是false(不同版本可能有差异),开发测试可以启用。

6.连接器connector使用线程池
server.xml文件中有注释掉的相关配置,合理设置线程池最大值,最小值,最大连接数,超时时间等,可通过jemeter进行压力测试,没有放之四海皆准的配置。namePrefix可以自定义方便标识。

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-star-"
 maxThreads="200" connectionTimeout="20000" minSpareThreads="10"/>

7.jsp预编译
我们知道jsp是通过servlet写出的,所以访问jsp页面会进行编译操作,jsp->java->class,提前把jsp编译成class可以减少运行时编译,当然这需要因地制宜。

8.连接器配置protocal
设置协议处理传入的流量,默认值是HTTP/1.1,tomcat会自动选择apr(如果存在相关本地库)或java nio,也可指定协议。

org.apache.coyote.http11.Http11NioProtocol -non blocking Java NIO connector
org.apache.coyote.http11.Http11Nio2Protocol -non blocking Java NIO2 connector
org.apache.coyote.http11.Http11AprProtocol -the APR/native connector.

9.合理设置JAVA_OPTS
相关设置需要结合服务器信息(内存,处理器等),可以打开gc日志,使用jemeter压测进行相应调整,适当调整各代大小减少gc。

set "JAVA_OPTS=%JAVA_OPTS% -server -Xms1024m -Xmx1024m -Xss512k -Xloggc:/star_gc.log -XX:+PrintGCDetails -XX:+UseG1GC"

10.有关session管理
如果有会话管理,可以直接使用tomcat生成的sessionId策略,无需自己再生成一套sessionId,或者实现SessionIdGenerator 定义自己的session管理,尽量减少重复性工作。

11 .增加Tomcat的内存

Tomcat默认使用最大内存为128M,可以修改 tomcat/bin/Catalina.bat 文件增加其内存。

设置下面语句

set CATALINA_OPTS =-Xms512m –Xmx1024m

12. 禁用AJP协议
  (1)通过禁用AJP协议,达到在集群的时候提高处理请求的时间。
  (2)启动tomcat后,不论从刚刚的管理员界面,还是从控制台上都可以看出,AJP协议是开启的。我们要做的就是要将此协议禁用,禁用方法:在server.xml中,将 

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

注释掉,重新启动tomcat即可
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章