tomcat性能优化 下载本文

4、应用集成(tomcat)部署规范

Tomcat 是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 当前稳定tomcat版本apache-tomcat-8.5.31 Apache Tomcat 8支持Java EE 7规范,包括: Servlet 3.1 、JSP 2.3 、EL 3.0 、WebSocket 1.1

4.1目录规范

建议tomcat部署在/usr/local/tomcat/,各应用服务对应的tomcat名称如下 /user/local/tomcat/tomcat-XXX (XXX名称自定义) 将部署目录/usr/local/tomcat所属权授予tomcat chown tomcat:tomcat /usr/local/tomcat/

4.2安全控制

4.2.1更改服务监听端口

更改tomcat默认3个端口(建议使用8000-8999之间)

4.2.2禁用管理端

删除默认/conf/tomcat-users.xml文件,重启tomcat将会自动生成新的文件 删除/webapps下载默认的所有目录和文件

4.2.3降权启动

使用非root权限启动Tomcat,尽量降低tomcat启动用户的目录访问权限; 创建tomcat组groupadd tomcat

创建tomcat用户并加入tomcat组useradd tomcat -g tomcat 以tomcat用户启动服务

4.2.4禁用文件列表访问

/conf/web.xml文件中的default部分的listings的配置必须为false(默认),表示不列出文件列表

4.2.5隐藏版本信息

编辑server.xml: vi /usr/local/tomcat8/conf/server.xml 为Connector 添加 server 属性

server=\ />

4.3性能优化

4.3.1运行模式优化

Tomcat有以下3中运行模式(根据应用场景选择运行模式):

bio

bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。

nio

是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。

apr

(Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。

应用场景

Bio、Nio、Apr适用场景分析:

Bio方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

Nio方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

Apr方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

bio server.xml 配置

nio server.xml 配置

apr server.xml 配置

当然,apr模式还需要安装 apr 、 apr-utils 、tomcat-native包

apr 安装

tar zxf apr-1.5.2.tar.gz -C /usr/local/src/

cd /usr/local/src/apr-1.5.2/./configure --prefix=/usr/local/apr && make && make install

apr-utils 安装

tar zxf apr-util-1.5.4.tar.gz -C /usr/local/src/

cd /usr/local/src/apr-util-1.5.4/./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-utils && make && make install

tomcat-native安装

cd /usr/local/tomcat/tomcat-XXX/bin/ tar zxf tomcat-native.tar.gz

cd tomcat-native-1.1.33-src/jni/native./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/java/ && make && make install

安装完在 /etc/profile 的JAVA变量后面多加一条APR的环境变量 设置环境变量

export JAVA_HOME=/usr/local/jdk1.7.0_79

export JRE_HOME=/usr/local/jdk1.7.0_79/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

server.xml标准配置如下

protocol=\

connectionTimeout=\ redirectPort=\ URIEncoding=\ keepAliveTimeout=\ maxKeepAliveRequests=\ minSpareThreads=\ maxSpareThreads=\ enableLookups=\ acceptCount=\

4.3.2连接池优化

conf/server.xml中打开注释,启用线程池 默认配置:

修改实例: