Tomcat优化

一、大杀器APR(可略)

APR是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (http://apr.apache.org/).
APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心.能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器.
在产品环境中,特别是直接使用Tomcat做WEB服务器的时候,应该使用Tomcat Native来提高其性能.如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来.
在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输.如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的.

以下是我找到的配置APR的一种方法:

Linux下,Tomcat启用APR须要三个组件:
apr
apr-util
tomcat-native.tar.gz(Tomcat自带,在bin文件夹下)

1、查看是否已经安装了apr和apr-util

[root@instance ~]# rpm -qa apr
apr-1.4.8-3.el7.x86_64
[root@instance ~]# rpm -qa apr-util
apr-util-1.5.2-6.el7.x86_64

2、查看是否有最新版的apr和apr-util

[root@instance ~]# yum list | grep apr
apr.x86_64                              1.4.8-3.el7                    @anaconda
apr-util.x86_64                         1.5.2-6.el7                    @anaconda

3、假设还没安装,用yum安装:

[root@instance ~]# yum install apr-devel apr apr-util

4、安装tomcat-native:
搜索tomcat-native安装包:

# yum list | grep tomcat-native

假设已经存在,直接安装:

[root@instance ~]# yum install tomcat-native
……
  正在安装    : tomcat-native-1.1.30-1.el7.x86_64        1/1
  验证中      : tomcat-native-1.1.30-1.el7.x86_64         1/1

已安装:
  tomcat-native.x86_64 0:1.1.30-1.el7                                                                                                                                                        
完成!

查看是否成功安装:

[root@instance ~]# rpm -qa tomcat-native
tomcat-native-1.1.30-1.el7.x86_64

配置相关的全局变量:

[root@instance ~]# vi /etc/profile
加入:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
# source /etc/profile

5、重新启动Tomcat。看看能否够成功使用APR
假设一切正常:
APR启动:

[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-18080"]
[main] org.apache.catalina.startup.Catalina.start Server startup in 13617 ms

二: tomcat参数调优:

1、tomcat IO优化:启动NIO模式

修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol

[root@instance ~]# cd /opt/lisam-shop-tomcat-8.5.46/conf
[root@instance ~]# vim server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />
2、tomcat线程优化

1、线程池开启并使用:去掉注释,添加并调整参数:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="800" minSpareThreads="100" maxQueueSize="100" prestartminSpareThreads="true"/>

2、Connector节点中指定线程池,并调整参数

<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxHttpHeaderSize="8192"
           maxThreads="1000"      //表示最多同时处理1000个连接
           processorCache="1000"
           acceptCount="1000"     //当同时连接的人数达到maxThreads时,还可以排队,队列大小为1000.超过1000就不处理
           minSpareThreads="100"  //初始化100个连接
           acceptorThreadCount="8"
           URIEncoding="UTF-8"
           enableLookups="false"
           edirectPort="8443"
           connectionTimeout="120000"
           keepAliveTimeout="120000"
           maxKeepAliveRequests="65535"
           disableUploadTimeout="true"/>

三、Tomcat内存优化—Jvm调优相关

1、修改文件:bin/catalina.sh

[root@instance ~]# cd /opt/tomcat/apache-tomcat-8.5.46/bin
[root@instance ~]# vim catalina.sh
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC"
//  -Xms : JVM初始化堆的大小
//  -Xmx : JVM堆的最大值 实际参数大小根据服务器配置或者项目具体设置.

2、jps -v

输出虚拟机进程启动时的JVM参数

3、jstat -gc 8331 250 20

监控Java堆状况;每250毫秒查询一次进程8331垃圾收集状况,一共查询20次

4、jstat -gcutil 8331

与-gc基本相同,但主要关注已使用空间占总空间的百分比

5、jmap -dump:format=b,file=xx.bin 8331

生成一个正在运行java的dump快照文件

6、VisualVM性能分析

四、服务器压力测试

webbench是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。
下载地址:http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz
安装

[root@instance ~]# tar zxvf webbench-1.5.tar.gz
[root@instance ~]# cd webbench-1.5
[root@instance ~]# make && make install

会在当前目录生成webbench可执行文件,直接可以使用了
用法:webbench -c 并发数 -t 运行测试时间 URL,如下:

[root@instance ~]# webbench -c 600 -t 30 http://ip:8080/test.jsp
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://ip:8080/test.jsp/  600 clients, running 30 sec.

Speed=528 pages/min, 99995 bytes/sec.
Requests: 264 susceed, 0 failed.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值