-
执行器最佳实践
-
连接器参数说明
-
- 通用属性(加粗是重点)
-
标准实现(加粗是重点)
-
连接器最佳实践
-
调整JVM参数进行优化
-
- 设置并行垃圾回收器
-
查看gc日志文件
-
调整年轻代大小
-
设置G1垃圾回收器
-
JVM配置最佳实践
-
总结
本博客的目的不在于给出最佳配置,而是带领开发者,能够从实际情况出发,通过不断的调节tomcat和jvm参数,去发现吞吐量,平均响应时间和错误率等信息的变化,同时根据服务器的cpu和内存等信息,结合接口的业务逻辑,最好是测试使用率最高,并发最大,或者是最重要的接口(比如下单支付接口),设置最优的tomcat和jvm配置参数。
通过Tomcat性能优化可以提高网站的并发能力。
Tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对Tomcat的优化也变得非常重要了。
对于Tomcat的优化,主要是从2个方面入手,一是Tomcat自身的配置,另一个是Tomcat所运行的jvm虚拟机的调优。
服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。硬件我们不说了,这个方面是钱越多越好是吧。
Linux环境安装运行Tomcat8
具体的安装步骤可以参考Linux(CentOS7)安装Tomcat与设置Tomcat为开机启动项
如果需要登录系统,必须配置tomcat用户,在安装完Tomcat后,进行如下操作
在/conf/tomcat-users.xml
文件中的<tomcat-users>
标签里面添加如下内容
如果是tomcat7,配置了tomcat用户就可以登录系统了,但是tomcat8中不行,还需要修改另一个配置文件,否则访问不了,提示403,打开webapps/manager/META-INF/context.xml
文件
打开浏览器进行访问10.172.0.202:8080
点击“Server Status”,输入用户名、密码进行登录,tomcat/tomcat
登录之后可以看到服务器状态等信息,主要包括服务器信息,JVM,ajp和http信息
AJP连接
在服务状态页面中可以看到,默认状态下会启用AJP服务,并且占用8009端口。
什么是AJP
AJP(Apache JServer Protocol)
AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。
我们一般是使用Nginx+Tomcat的架构,所以用不着AJP协议,把AJP连接器禁用。
修改conf下的server.xml文件,将AJP服务禁用掉即可。
重启tomcat,查看效果。可以看到AJP服务已经不存在了。
执行器(线程池)
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。
修改server.xml文件:
<Executor name=“tomcatThreadPool” namePrefix=“catalina-exec-”
maxThreads=“500” minSpareThreads=“50” prestartminSpareThreads=“true” maxQueueSize=“100”/>
<Connector executor=“tomcatThreadPool” port=“8080” protocol=“HTTP/1.1”
connectionTimeout=“20000”
redirectPort=“8443” />
保存退出,重启tomcat,查看效果。