阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

解析Tomcat性能优化N种方法

32次阅读
没有评论

共计 1835 个字符,预计需要花费 5 分钟才能阅读完成。

Tomcat 在各位 JavaWeb 从业者常常就是默认的开发环境,但是 Tomcat 的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好 Tomcat 还有很多的提升空间. 下文介绍一下 Tomcat 优化, 可以分为内存, 线程,IO.
Tomcat 在各位 JavaWeb 从业者常常就是默认的开发环境,但是 Tomcat 的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈.

幸好 Tomcat 还有很多的提升空间. 下文介绍一下 Tomcat 优化, 可以分为内存, 线程,IO.

一:Tomcat 内存优化, 启动时告诉 JVM 我要一块大内存 (调优内存是最直接的方式)

Windows 下的 catalina.bat

Linux 下的 catalina.sh 如:

JAVA_OPTS='-Xms256m -Xmx512m'

-Xms JVM 初始化堆的大小

-Xmx JVM 堆的最大值 实际参数大小根据服务器配置或者项目具体设置.

二:Tomcat 线程优化 在 server.xml 中 如:

maxThreads=”X” 表示最多同时处理 X 个连接

minSpareThreads=”X” 初始化 X 个连接

maxSpareThreads=”X” 表示如果最多可以有 X 个线程,一旦超过 X 个, 则会关闭不在需要的线程

acceptCount=”X” 当同时连接的人数达到 maxThreads 时, 还可以排队, 队列大小为 X. 超过 X 就不处理

三:Tomcat IO 优化

1: 同步阻塞 IO(JAVA BIO)同步并阻塞,服务器实现模式为一个连接一个线程 (one connection one thread 想想都觉得恐怖, 线程可是非常宝贵的资源),当然可以通过线程池机制改善.

2:JAVA NIO: 又分为同步非阻塞 IO, 异步阻塞 IO 与 BIO 最大的区别 one request one thread. 可以复用同一个线程处理多个 connection(多路复用).

3:, 异步非阻塞 IO(Java NIO2 又叫 AIO) 主要与 NIO 的区别主要是操作系统的底层区别. 可以做个比喻: 比作快递,NIO 就是网购后要自己到官网查下快递是否已经到了 (可能是多次),然后自己去取快递;AIO 就是快递员送货上门了 (不用关注快递进度)。

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

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

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

在 server.xml 中

实现对 Tomcat 的 IO 切换.

四: 大杀器 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 是非常必要的.

安装 Apache Tomcat Native Library,直接启动就支持 apr (http://tomcat.apache.org/native-doc/) 它本身是基于 APR 的. 具体安装方法可以参考其他博客和文章. 排除代码问题 Tomcat 优化到这个层次, 可以应对大部分性能需求.

 最后一句话 "再牛 B 的服务器, 也顶不住一个傻 B 的代码". 优化的前提条件是良好的代码质量和设计.

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1835字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中