Tomcat优化
- 一、Tomcat配置文件参数优化
- 二、负载均衡,动静分离
- 七层代理配置
- 四层代理配置
Tomcat 默认安装下的缺省配置并不适合生产环境,它会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tomcat 配置文件参数优化,Java 虚拟机(JVM)调优。其中最难理解的就是 JVM 调优。
一、Tomcat配置文件参数优化
关于 Tomcat 主配置文件 server.xml 里面很多默认的配置项,并不能满足业务需求,常用的优化参数如下。
【redirectPort】如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的 8443 端口。
【maxThreads】Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。
【minSpareThreads】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10。
【maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定。
【processorCache】进程缓冲器,可以提升并发请求。默认值是200,如果不做限制的话可以设置为-1,一般采用maxThreads的值或者-1。
【URIEncoding】指定 Tomcat 容器的 URL 编码格式,网站一般采用UTF-8作为默认编码。
【connnectionTimeout】网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。
【enableLookups】是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。
【disableUploadTimeout】上传时是否使用超时机制。应设置为 true。
【connectionUploadTimeout】上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。
【acceptCount】指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。
【maxKeepAliveRequests】指定一个长连接的最大请求数。默认长连接是打开的,设置为1时,代表关闭长连接;为-1时,代表请求数无限制
【compression】是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽。
【compressionMinSize】表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。
【compressableMimeType】压缩类型,指定对哪些类型的文件进行数据压缩。
【noCompressionUserAgents=“gozilla, traviata”】对于以下的浏览器,不启用压缩
#如果已经进行了动静分离处理,静态页面和图片等数据就不需做 Tomcat 处理,也就不要在 Tomcat 中配置压缩了。
以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTP Connector 与 AJP Connector 的参数属性值,可以参考官方文档的详细说明进行学习。
操作步骤:
vim /usr/local/tomcat/conf/server.xml
二、负载均衡,动静分离
其原理为:服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,由于nginx处理动态资源的能力较差,所以动态资源nginx会转发至后端。
七层代理配置
需准备三台虚拟机:
nginx服务器:192.168.136.53:80
tomcat服务器1(一个实例):192.168.136.54:8080
tomcat服务器2(两个实例):192.168.136.55:8080 192.168.136.55:8081
三台虚拟机的基础配置前期都有讲解,这里就直接进入七层代理的配置。
(1)Tomcat1 server 的动静分离配置
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
systemctl restart tomcai 别忘了配置完事之后重启服务
(2)Tomcat2 server 的动静分离配置
mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test
vim /usr/local/tomcat/tomcat1/conf/server.xml
systemctl restart tomcai 别忘了配置完事之后重启服务
vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
vim /usr/local/tomcat/tomcat2/conf/server.xml
systemctl restart tomcai 别忘了配置完事之后重启服务
3)Nginx server 动静分离配置
先准备静态页面和静态图片
echo ‘<html><body><h1>这是静态页面</h1></body></html>’ > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cp /root/game.jpg /usr/local/nginx/html/img
vim /usr/local/nginx/conf/nginx.conf
4.测试效果
测试静态页面效果
浏览器访问 http://192.168.136.53/
浏览器访问 http://192.168.136.53/game.jpg
测试负载均衡效果,不断刷新浏览器测试
浏览器访问 http://192.168.136.53/test/index.jsp
四层代理配置
四层代理需要使用五台虚拟机:
nginx服务器:192.168.136.51:80
nginx服务器1:192.168.136.52:80
nginx服务器2:192.168.136.53:80
tomcat服务器1(一个实例):192.168.136.54:8080
tomcat服务器2(两个实例):192.168.136.55:8080 192.168.136.55:8081
在现有七层代理的基础上再添加一个七层代理虚拟机。
配置完可以测试一下
再添加一台Nginx虚拟机,用来做接收客户端的信息