栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Tomcat优化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Tomcat优化

tomcat安装

tomcat安装在IP为y.y.y.y的服务器上

第一步,在/mnt文件夹中新建三个分别命名为server-jre、tomcat7和tomcat7-2的文件夹。

第二步,在server-jre文件夹下进行下载server-jre-8u202-linux-x64。到地址:Apache Tomcat® - Welcome!下载apache-tomcat-7.0.90的tar.gz压缩包。然后使用WinSCP将apache-tomcat-7.0.90压缩包上传到/mnt文件夹中的tomcat7和tomcat7-2文件夹。

命令:cd /mnt/server-jre

wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz

第三步,分别在server-jre、tomcat7和tomcat7-2三个文件夹下进行解压tar.gz压缩包。

命令:cd /mnt/server-jre

tar -zxvf server-jre-8u202-linux-x64.tar.gz

cd /mnt/tomcat7

tar -zxvf apache-tomcat-7.0.90.tar.gz

cd /mnt/tomcat7-2

tar -zxvf apache-tomcat-7.0.90.tar.gz

第四步,配置jre环境变量,打开/etc/profile文件,在文件底部另起一行,加上下面三行代码:

export JRE_HOME=/mnt/server-jre/jdk1.8.0_202

export PATH=$PATH:$JRE_HOME/bin

export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

第五步,测试server-jre是否配置成功。

命令:source /etc/profile     #刷新profile文件

java -version                 #查看jdk版本

如果成功显示server-jre的版本,则说明server-jre配置成功。

tomcat配置及启动

第一步,配置tomcat环境变量,打开/etc/profile文件,在文件底部添加配置之后显示如下:

export  JRE_HOME=/mnt/server-jre/jdk1.8.0_202

#tomcat1

export CATALINA_HOME=/mnt/tomcat7/apache-tomcat-7.0.90

export CATALINA_base=/mnt/tomcat7/apache-tomcat-7.0.90

export TOMCAT_HOME=/mnt/tomcat7/apache-tomcat-7.0.90

#tomcat2

export CATALINA_2_HOME=/mnt/tomcat7-2/apache-tomcat-7.0.90

export CATALINA_2_base=/mnt/tomcat7-2/apache-tomcat-7.0.90

export TOMCAT_2_HOME=/mnt/tomcat7-2/apache-tomcat-7.0.90

export PATH=$PATH:$JRE_HOME/bin:$CATALINA_HOME/bin:$CATALINA_2_HOME/bin

export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

命令:source /etc/profile     #刷新profile文件

第二步,编辑配置tomcat7和tomcat7-2中的server.xml文件。

进入文件夹/mnt/tomcat7/apache-tomcat-7.0.90/conf,编辑server.xml。server.xml文件代码如下:



    ...

 #port设置为8009

  

   ...



    

...

进入文件夹/mnt/tomcat7-2/apache-tomcat-7.0.90/conf,编辑server.xml。server.xml文件代码如下:



    ...

 #port设置为8010

  

   ...



    

...

第三步,编辑配置/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的 catalina.sh文件。为防止出错,先提前备份一下,然后把catalina.sh 和startup.bat文件中的变量CATALINA_HOME、CATALINA_base和CATALINA_TMPDIR对应替换成与环境变量配置时一致的CATALINA_2_HOME、CATALINA_2_base和CATALINA_2_TMPDIR,最后给予权限。

命令:cd /mnt/tomcat7-2/apache-tomcat-7.0.90/bin

chmod a+x catalina.sh

第四步,编辑配置tomcat7和tomcat7-2文件夹中的startup.sh 和 shutdown.sh文件。

/mnt/tomcat7/apache-tomcat-7.0.90/bin下的startup.sh文件代码如下:

#!/bin/sh

...

# Start script for the CATALINA Server

# ---------------------------------------------------------

export CATALINA_base=$CATALINA_base

export CATALINA_HOME=$CATALINA_HOME

export TOMCAT_HOME=TOMCAT_HOME

# Better OS/400 detection: see Bugzilla 31132

...

/mnt/tomcat7/apache-tomcat-7.0.90/bin下的shutdown.sh文件代码如下:

#!/bin/sh

...

# Stop script for the CATALINA Server

# ---------------------------------------------------------

export CATALINA_base=$CATALINA_base

export CATALINA_HOME=$CATALINA_HOME

export TOMCAT_HOME=TOMCAT_HOME

# Better OS/400 detection: see Bugzilla 31132

...

/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的startup.sh文件代码如下:

#!/bin/sh

...

# Start script for the CATALINA Server

# ---------------------------------------------------------

export CATALINA_base=$CATALINA_2_base  

export CATALINA_HOME=$CATALINA_2_HOME

export TOMCAT_HOME=TOMCAT_2_HOME

# Better OS/400 detection: see Bugzilla 31132

...

/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的shutdown.sh文件代码如下:

#!/bin/sh

...

# Stop script for the CATALINA Server

# ---------------------------------------------------------

export CATALINA_base=$CATALINA_2_base

export CATALINA_HOME=$CATALINA_2_HOME

export TOMCAT_HOME=TOMCAT_2_HOME

# Better OS/400 detection: see Bugzilla 31132

...

第五步,测试tomcat是否配置成功。

命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/bin

./startup.sh

netstat -ntl | grep 9004

cd /mnt/tomcat7-2/apache-tomcat-7.0.90/bin

./startup.sh

netstat -ntl | grep 9006

如果结果成功显示“Tomcat started”,则说明tomcat成功启动。

如果tomcat启动失败,那么可能就是启动时使用的端口被其他应用程序占用了,可以查看端口被哪个应用程序占用了。

命令:lsof -i:端口号

ps -ef | grep 进程号PID

tomcat成功启动后,然后直接根据IP和端口在本地浏览器访问。

如果页面成功显示“Apache Tomcat/8.5.73”,则说明tomcat配置成功。

如果发现访问不到,可以查看防火墙是否开着。

命令:systemctl status firewalld.service   #查看防火墙的状态

systemctl stop firewalld.service          #临时将防火墙关闭

关闭tomcat命令:./shutdown.sh

tomcat内存优化

第一步,进入/mnt/tomcat7/apache-tomcat-7.0.90/bin文件夹,编辑catalina.sh文件,在前面加入下面代码:

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

Windows编辑tomcat7/apache-tomcat-7.0.90/bin/catalina.bat,在前面加入下面代码:

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

最大堆内存是1024m,对于现在的硬件还是偏低,实施时,还是按照机器具体硬件配置优化。

第二步,内存设置成功后,可以利用server-jre中的工具进行验证。

jps:用来显示本地的java进程,以及进程号,进程启动的路径等。

进入/mnt/server-jre/jdk1.8.0_202/bin,输入“jps”。

如果显示以下结果:

786 Bootstrap

2548 Jps

746 Bootstrap

(Bootstrap就是启动的tomcat,其进程号为786和746。),

那么已经配置成功。

tomcat 线程优化

maxThreads的配置绝对不是越大越好。maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。

最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。acceptCount大于等于maxThreads,这个值主要根据应用的访问峰值与平均值来权衡配置的。如果设的较小,可以保证接受的请求较快响应,但是超出的请求可能就直接被拒绝。如果设的较大,可能就会出现大量的请求超时的情况,因为系统的处理能力是一定的。maxThreads配置要结合JVM -Xmx参数调整,即要考虑内存开销。

第一步,进入/mnt/tomcat7/apache-tomcat-7.0.90/conf文件夹,编辑server.xml文件,对http connector进行优化:

第二步,编辑修改节点,增加executor属性,executor设置为线程池的名字:

由于多个connector共享一个线程池,所以ajp connector也可以设置使用tomcatThreadPool线程池。

第三步,若使用apache和tomcat做集群的负载均衡,并且使用ajp协议做apache和tomcat的协议转发,则还需要对ajp connector进行优化:

第四步,由于tomcat有多个connector,而tomcat线程的配置又支持多个connector共享一个线程池,因此增加下面的代码进行优化:

禁用DNS查询

当web应用程序想要记录客户端的信息时,也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。

DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。

修改/mnt/tomcat7/apache-tomcat-7.0.90/conf/server.xml文件中的Connector元素,修改属性enableLookups参数值: enableLookups="false"

如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。

设置session过期时间

tomcat采用数据库连接池技术,当用户在一定时间内不对数据库进行操作,tomcat就会自动关闭连接,这是为了更好地利用资源,防止浪费宝贵的数据库连接资源。

/mnt/tomcat7/apache-tomcat-7.0.90/conf/web.xml文件中通过参数指定:

    

        180 #单位为分钟

    

APR插件提高Tomcat性能

tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术。APR有很多用途,包括访问高级I/O功能(如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等),本地进程管理(共享内存,NT管道和UNIX sockets)。

在产品环境中,特别是直接使用tomcat做WEB服务器的时候,应该使用Tomcat Native来提高其性能。要测APR给tomcat带来的好处,最好的方法是在慢速网络上(模拟Internet),将tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,300个线程就会很快用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,可能马上会从原来的300下降到几十,新的请求会毫无阻塞的进来。

在局域网环境中,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间连0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用APR是非常必要的。

第一步,安装APR和tomcat-native。

第一种

先在/etc/profile文件中新增下面代码:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/apr/lib

export LD_RUN_PATH=$LD_RUN_PATH:/mnt/apr/lib

环境变量生效命令:source /etc/profile

然后安装APR和tomcat-native:

命令:yum install apr apr-devel make gcc-c++ openssl openssl-devel

cd /mnt/tomcat7/apache-tomcat-7.0.90/bin

tar zxvf tomcat-native.tar.gz

cd tomcat-native-1.2.17-src/native

./configure

make

make install

第二种

cd /mnt/apr

wget http://archive.apache.org/dist/apr/apr-1.4.8.tar.gz

tar zxvf apr-1.4.8.tar.gz

cd apr-1.4.8

./configure

make

make install

cd /mnt/apr/lib

wget http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz

tar zxvf apr-util-1.5.1.tar.gz

cd apr-util-1.5.1

./configure --with-apr=/mnt/apr/apr-1.4.8

make

make install

cd /mnt/tomcat7/apache-tomcat-7.0.90/bin

tar zxvf tomcat-native.tar.gz

cd tomcat-native-1.2.17-src/native

./configure --with-apr=/mnt/apr/apr-1.4.8

make

make install

第二步,设置tomcat整合APR。

修改tomcat的启动程序startup.sh,在程序中加入启动参数:

CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/mnt/apr/lib"

重新启动tomcat服务,然后查看catalina.out文件。如果在catalina.out中出现“org.apache.coyote.http11.Http11Protocol init”,则说明安装成功。

tomcat的安全配置

第一步,当tomcat安装成功后,需要做的事情如下:

首次安装完成后立即删除webapps下面的所有代码

命令:rm -rf /mnt/tomcat7/apache-tomcat-7.0.90/webapps/*

注释或删除tomcat-users.xml所有用户权限。

第二步,隐藏tomcat版本。

首先找到/mnt/tomcat7/apache-tomcat-7.0.90/lib/catalina.jar,

然后解压catalina.jar,按照路径/org/apache/catalina/util/找到ServerInfo.properties文件。

命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/lib

jar xvf catalina.jar

然后编辑修改ServerInfo.properties文件,把server.number和server.built置空。最后重新打成jar包,重启tomcat服务。

命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/lib

jar cvf catalina.jar meta-INF org

第三步,隐藏tomcat 的服务类型。

/mnt/tomcat7/apache-tomcat-7.0.90/conf/server.xml文件中,为connector元素添加server=" ",注意不是空字符串,是空格组成的长度为1的字符串,或者输入其他的服务类型,在response header中就没有server的信息。

第四步,应用程序安全。

关闭war自动部署,设置unpackWARs="false" autoDeploy="false",防止被植入木马等恶意程序。

第五步,修改服务监听端口。

一般公司的tomcat都是放在内网的,因此针对tomcat服务的监听地址都是内网地址。

修改实例:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号