Tomcat 性能调优

Tomcat 性能调优,第1张

默认的模式,性能非常低下,没有经过任何优化处理和支持. 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。

Tomcat7或以下,在Linux系统中默认使用这种方式。

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

利用Java的异步IO处理,可以通过少量的线程处理大量的请求。

配置方式:

打开 tomcat 安装目录 \conf\server.xml文件,定位到这一行:

将其修改为

安装起来最困难,但是从 *** 作系统级别来解决异步的IO问题,大幅度的提高性能.

即Apache Portable Runtime,从 *** 作系统层面解决io阻塞问题。

Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。

Linux如果安装了apr和native,Tomcat直接启动就支持apr。

具体安装办法 参见这个地址: https://my.oschina.net/lsw90/blog/181161

Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:

Starting ProtocolHandler ["http-bio-8080"]

Starting ProtocolHandler ["http-nio-8080"]

Starting ProtocolHandler ["http-apr-8080"]

默认的tomcat没有启用线程池

在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。这里前台其实有一个调度线程,然后调度线程会放入线程池内,然后到到一定的时候线程池的任务变成工作线程

打开 tomcat 安装目录 \conf\server.xml文件,找到下面这段注释并打开:

然后找到下面的这个配置,注释掉上面的 Connector ,打开下面被注释掉的 Connector

Connector是连接器,负责接收客户的请求,以及向客户端回送响应的消息。所以 Connector 的优化是重要部分。默认情况下Tomcat支持200线程访问,超过这个数量的连接将被等待甚至超时放弃,所以我们需要提高这方面的处理能力。

打开 tomcat 安装目录 \conf\server.xml文件,找到Connector的配置部分:

其中 port 代表服务接口;protocol 代表协议类型;connectionTimeout 代表连接超时时间,单位为毫秒;redirectPort 代表安全通信(https)转发端口,一般配置成443。

可以看到除了这几个基本配置外并无特殊功能,所以我们需要对 Connector 进行扩展。

其中Connector 支持参数属性可以参考Tomcat官方网站( https://tomcat.apache.org/tomcat-8.0-doc/config/http.html )非常多,所以本文就只介绍些常用的。

除了上面列出的常见的连接器属性,标准的HTTP连接器(BIO,NIO和APR/native)都支持以下属性。

Tomcat网站的文档专门有一块是介绍在Tomcat中如何使用APR库的,说白了就是如何在Tomcat中使用JNI的方式来读取文件以及进行网络传输。这个东西可以大大提升Tomcat对静态文件的处理性能,同时如果你使用了HTTPS方式传输的话,也可以提升SSL的处理性能。 

一般在Windows下,可以直接下载编译好的二进制版本的dll库文件来使Tomcat启用APR,下载地址是:http://tomcat.heanet.ie/native/ 

而在Linux下,可以直接解压和安装bin目录下的tomcat_native.tar.gz文件,编译之前要确保apr库已经安装,安装的方式:

# ./configure --with-apr=/usr/local/apr 

# make 

# make install

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加一行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

怎么才能判断Tomcat是否已经启用了APR库呢?方法是通过看Tomcat的启动日志 

如果没有启用APR,则启动日志一般有这么一条: 

org.apache.coyote.http11.Http11Protocol start

如果启用了APR,则这条日志就会变成: 

org.apache.coyote.http11.Http11AprProtocol start

1、配置JAVA_HOME

例如 vi /etc/bashrc添加

export JAVA_HOME=/opt/jdk1.7

2、解压tomcat7.0.tar.gz到/opt/tomcat7

3、cd /opt/tomcat7

./bin/startup.sh即可

4、netstat -ntlp检查端口


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8343619.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存