tomcat优化
本文重点讲解tomcat的优化。
基本优化思路:
1. 尽量缩短单个请求的处理时间。
2. 尽量多的处理并发的请求能力。
3. 一定要做到横向的扩展。
1.1 tomcat优化
tomcat默认的配置已经是经过优化的,留给开发人员优化的空间很小。主要调整的参数如下(实际项目开发中可以根据如下的参数进行测试):
1.1.1 虚拟机优化
根据机器的配置合理的分配tomcat内存。内存的配置在Tomcat启动的时候可以通过catalina.sh脚本中的JAVA_OPTS进行相应的设置。常见的配置如下:
-server 启用jdk 的 server 版;
-Xms Java虚拟机初始化时的最小内存;
-Xmx java虚拟机可使用的最大内存(建议设置到物理内存的80%);
-XX: PermSize 内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域(默认32M) 。
-XX:MaxNewSize 新生代内存的最大内存(默认16M)
需要注意:Xms 与Xmx最好一致,以避免每次虚拟机GC调整堆的大小。因为默认的空余堆内存小于40%时,JVM就会增大堆的空间,一直到-Xmx的最大限制。空余堆内存大于70%时,JVM就会减少堆的空间,一直到- Xms 的最大限制。
PermSize,MaxPermSize两个参数tomcat8中无需指定。从java8 之后,这两个参数的值如果内存不够,他可以自动扩充,另外,你修改变量值最好不要修改自带的catalina.sh,等脚本,官方说了,新建setenv.sh,每次启动关闭,都会自动调用这个去处理变量问题
观察配置是否生效,可以通过 jmap –heap tomcat的进程号。
我的配置如下:
JAVA_OPTS=" -Xms512m -Xmx8192m -XX:MaxPermSize=256m "
启动tomcat命令如下:
./catalina.sh run
查看tomcat的端口号:
ps -ef|grep /usr/local/devsoftware/apache-tomcat-8.5.11/bin
验证配置的变量是否生效,使用命令如下:
jmap -heap 3503
通过上图可知,配置的变量已经生效。
1.1.2 tomcat优化
tomcat中 server.xml 中Connector的配置,常见的属性如下:
1) maxConnections:最大连接数。Bio模式中默认值等于maxThreads。Nio模式中默认值为10000。对于APR/native默认值为8192。
2) maxThreads:最大线程数。即同时处理任务的个数,默认为200。
3) acceptCount:当处理任务的线程达到最大个数的时候,接受排队的请求格式,默认100。
4) minSpareThreads:最小空闲线程个数,默认为10。
5) compression:是否开启gzip压缩。
6) compressableMimeType:哪些类型需要压缩,默认为text/html,text/xml,text/css,text/plain。
7) compressionMinSize:启用压缩的输出内容大小,默认2048。
8) enableLookups:是否开启反查域名,为了提高处理速度应该设置该值为false。
9) connectionTimeout:网络连接超时时间,单位为毫秒。设置为-1则表示永远不超时,通常设置2000即可。
一、使用注意:如果为了提高并发量,需要提高设置maxThreads和acceptCount,通常两者设置一样即可。WebServer允许的最大连接受制于服务器的处理能力,可以通过ulimit –a命令进行查看。
二、如果配置了Executor ,那么以Executor 属性值为准。
本案例的配置如下:
<Connector port="8080" protocol="HTTP/1.1"
redirectPort="8443"
maxHttpHeaderSize="8192"
maxThreads="1000"
minSpareThreads="100"
maxSpareThreads="1000"
minProcessors="100"
maxProcessors="1000"
enableLookups="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
connectionTimeout="20000"
URIEncoding="utf-8"
acceptCount="1000"
disableUploadTimeout="true"/>
1.1.3 BIO/NIO/APR
1. BIO是最老的最稳定的(默认)的一个连接器。采用阻塞的方式工作。意味着每个连接线程绑定到每一个Http请求。知道Http返回为止。如果Http客户端的请求的是keep-alive连接,那么这些连接会一直保持着知道timeout(过期)。这期间他不会处理任何的请求。
2. NIO使用Java中的异步IO处理技术,不做阻塞。如果要想使用该方式则可以修改protocol属性值为org.apache.coyote.http11.Http11NioProtoco。
3. APR采用原生的c语言IO处理技术,但是需要安装apr和native,直接启动tomcat就支持apr。使用的时候需要设置protocol属性值为org.apache.coyote.http11.Http11AprProtocol。
a) 安装apr
其中apr的下载地址为:http://apr.apache.org/download.cgi
本文使用的apr版本为apr-1.5.2.tar.gz。
将其解压然后
cd apr-1.5.2
./configure --prefix=/usr/local/devsoftware/apr
make make install
即可完成安装
b) 安装apr-iconv
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/devsoftware/apr-iconv --with-apr=/usr/local/devsoftware/apr
make make install
即可完成安装
c) 安装apr-utils
cd apr-util-1.5.4
./configure --prefix=/usr/local/devsoftware/apr-util --with-apr=/usr/local/devsoftware/apr --with-apr-iconv=/usr/local/devsoftware/apr-iconv
make make install
即可完成安装
d) 安装tomcat-native 首先进入tomcat的bin目录
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.10-src
cd /usr/local/devsoftware/apache-tomcat-8.5.11/bin/tomcat-native-1.2.10-src/native
./configure --with-apr=/usr/local/devsoftware/apr
make make install
即可完成安装
e) 设置apr环境变量
进入tomcat的bin目录,打开catalina.sh。然后在#!/bin/sh中添加如下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/devsoftware/apr/lib。当然了为了保持tomcat的独立性,配置在期望使用的tomcat最好不过。
再次启动tomcat,如果以上环节安装成功,输出的日志为:
08-Feb-2017 05:38:55.303 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: :/usr/local/devsoftware/apr/lib:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
tomcat优化(转)的更多相关文章
-
tomcat优化
tomcat优化:vim catalina.sh添加:JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -X ...
-
windows tomcat 优化
windows tomcat 优化 1. tomcat conf server.xml 在server.xml中修改以一部分,增加节点数目,可以很好的提高性能: <Connector port ...
-
Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法
Tomcat 优化 java.lang.OutOfMemoryError: Java heap space 的解决方法 java.lang.OutOfMemoryError: Java heap sp ...
-
tomcat优化-有改protocol 和 缓存 集群方案
tomcat优化 在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下七种调优经验. 1. 服务器资源 服务器所能提供CPU.内存.硬 ...
-
tomcat 优化配置 java-8 tomcat-7
tomcat 优化配置 , 说明 一.并发优化 1.JVM调优 以下为1G物理内存tomcat配置: JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256 ...
-
Tomcat 优化方案 和 配置详解(转)
转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...
-
Tomcat优化之容易集合经验
Tomcat优化1. 如何加大tomcat连接数在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有: maxThreads : t ...
-
tomcat优化实例
———————————————————————————————————— 一.运行模式优化 修改tomcat运行模式为nio<Connector port="80" prot ...
-
tomcat优化之安装并配置apr库
在谈到tomcat优化时,必然要说到apr库,这个库是C语言实现的,tomcat通过JNI方式使用该库可以大大提高性能. tomcat在使用apr时需要安装apr,apr-util和tomcat-na ...
-
tomcat优化和JVM修改内存
Tomcat中的线程池(APR和ThreadPool) 2. 在Connector中指定使用共享线程池: <Connector executor="tomcatThreadPool&q ...
随机推荐
-
RMAN基础知识补充
一.FORMAT字符串替代变量 使用FORMAT参数时可使用的各种替换变量,如下: %c :备份片的拷贝数(从1开始编号): %d :数据库名称: %D :位于该月中的天数 (DD): %M :位于该 ...
-
c#搭建服务端 简单中最高效的数据操作Linq (4)
.NET F 3.5之后提出的linq to sql 概念,大大的简化了对于数据对象的操作,可以通过简单的语法直接操作数据对象,如List,Linq to sql类 等等. 1.使用Linq to s ...
-
apache配置,禁止ip访问web站点
由于一台服务器上面部署了好几个应用,对应不同的域名,如果用户知道ip地址的话,直接用户ip地址访问,会显示第一个虚拟主机的页面(更改了虚拟主机的顺序,每次都是显示第一个).这样对用户造成不好的印象,所 ...
-
KFold,StratifiedKFold k折交叉切分
python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...
-
web----WSGI
概念: WSGI协议其实是定义了一种server与application解耦的规范 WSGI规范简单理解:一方面给Server提供接口,凡是以这种接口的web服务器,都是遵循WSGI规范的 另一方面给 ...
-
【SPL标准库专题(10)】SPL Exceptions
嵌套异常 了解SPL异常之前,我们先了解一下嵌套异常.嵌套异常顾名思义就是异常里面再嵌套异常,一个异常抛出,在catch到以后再抛出异常,这时可以通过Exception基类的getPrevious方法 ...
-
Zookeeper 系列(二)安装配制
Zookeeper 系列(二)安装配制 一.Zookeeper 的搭建方式 Zookeeper 安装方式有三种,单机模式和集群模式以及伪集群模式. 单机模式 :Zookeeper 只运行在一台服务器上 ...
-
Jquery重新学习之四[核心属性与文档处理属性]
1:核心.each(callback),size(),length(),get([index]) 1.1 .each(callback)通过它可以遍历对象.数组的属性值并进行处理 <form i ...
-
Codeforces 1082 B. Vova and Trophies-有坑 (Educational Codeforces Round 55 (Rated for Div. 2))
B. Vova and Trophies time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
-
redis 学习笔记(二)
1. 在centos下安装g++,如果输入 yum install g++,那么将会提示找不到g++.因为在centos下g++安装包名字叫做:gcc-c++ 所以应该输入 yum install g ...