当前位置:   article > 正文

Tomcat 8 性能优化_tomcat8 protocol=

tomcat8 protocol=

授人以鱼不如授人以渔

本文章的目的不在于给出最佳配置,而是带领开发者,能够从实际情况出发,通过不断的调节tomcat和jvm参数,去发现吞吐量,平均响应时间和错误率等信息的变化,同时根据服务器的cpu和内存等信息,结合接口的业务逻辑,最好是测试使用率最高,并发最大,或者是最重要的接口(比如下单支付接口),设置最优的tomcat和jvm配置参数。

目的

通过Tomcat性能优化可以提高网站的并发能力。

Tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对Tomcat的优化也变得非常重要了。

对于Tomcat的优化,主要是从2个方面入手,一是Tomcat自身的配置,另一个是Tomcat所运行的jvm虚拟机的调优。

服务器资源

服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。硬件我们不说了,这个方面是钱越多越好是吧。

 

01

Tomcat配置优化

Linux环境安装运行Tomcat8

如果需要登录系统,必须配置tomcat用户,在安装完Tomcat后,进行如下操作

在/conf/tomcat-users.xml文件中的<tomcat-users>标签里面添加如下内容

  1. <!-- 修改配置文件,配置tomcat的管理用户 -->
  2. <role rolename=manager/>
  3. <role rolename=manager-gui/>
  4. <role rolename=admin/>
  5. <role rolename=admin-gui/>
  6. <user username=tomcat password=tomcat roles=admin-gui,admin,manager-gui,manager/>

如果是tomcat7,配置了tomcat用户就可以登录系统了,但是tomcat8中不行,还需要修改另一个配置文件,否则访问不了,提示403,打开webapps/manager/META-INF/context.xml文件

  1. <!-- 将Valve标签的内容注释掉,保存退出即可 -->
  2. <?xml version=1.0 encoding=UTF-8?>
  3. <Context antiResourceLocking=false privileged=true >
  4.   <!--<Valve className=org.apache.catalina.valves.RemoteAddrValve
  5.          allow=127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1 />-->
  6.   <Manager sessionAttributeValueClassNameFilter=java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap/>
  7. </Context>

打开浏览器进行访问10.172.0.202:8080

点击“Server Status”,输入用户名、密码进行登录,tomcat/tomcat

登录之后可以看到服务器状态等信息,主要包括服务器信息,JVM,ajp和http信息

 

02

AJP连接

在服务状态页面中可以看到,默认状态下会启用AJP服务,并且占用8009端口。

什么是AJP

AJP(Apache JServer Protocol)

AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。

我们一般是使用Nginx+Tomcat的架构,所以用不着AJP协议,把AJP连接器禁用。

修改conf下的server.xml文件,将AJP服务禁用掉即可。

  1. <!-- 禁用AJP连接 -->
  2. <!-- <Connector port=8009 protocol=AJP/1.3 redirectPort=8443 /> -->

重启tomcat,查看效果。可以看到AJP服务已经不存在了。

 

03

执行器(线程池)

在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。

修改server.xml文件:

  1. <!--将注释打开-->
  2. <Executor name=tomcatThreadPool namePrefix=catalina-exec-
  3.         maxThreads=500 minSpareThreads=50 prestartminSpareThreads=true maxQueueSize=100/>
  4. <!--
  5. 参数说明:
  6. maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 1000,根据硬件设施和业务来判断
  7. minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25
  8. prestartminSpareThreads: 在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了
  9. maxQueueSize,最大的等待队列数,超过则拒绝请求
  10. -->
  11. <!--在Connector中设置executor属性指向上面的执行器-->
  12. <Connector executor=tomcatThreadPool port=8080 protocol=HTTP/1.1
  13.                connectionTimeout=20000
  14.                redirectPort=8443 />

保存退出,重启tomcat,查看效果。

在页面中显示最大线程数为-1,这个是正常的,仅仅是显示的问题,实际使用的是指定的值。如果配置了一个Executor,则该属性的任何值将被正确记录,但是它将被显示为-1

 

04

3种运行模式

tomcat的运行模式有3种:

bio

性能非常低下,没有经

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/752490
推荐阅读
相关标签
  

闽ICP备14008679号