Tomcat线程模型及调优(tomcat线程耗尽症状)
off999 2025-02-04 15:29 35 浏览 0 评论
一、Tomcat线程模型
1. BIO
同步阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即Java.io包及其子包)。Tomcat7以下版本默认情况下是以bio模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低。启动tomcat看到如下日志,表示使用的是BIO模式。
tomcat6默认采用的。每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景。
2. NIO
同步非阻塞I/O操作。是java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。是一个基于缓冲区、并能 提供非阻塞I/O操作的Java API,它拥有比传统I/O操作(bio)更好的并发运行性能。
NIO中Connector中比BIO多了一个Poller:主要用来轮询事件列表中的事件,判断连接是否可读可写。然后生成任务定义器,放入Executor线程
一群人去银行办理服务,先填表,不去柜台。有一个人专门轮询看是否有人填好了。
3. ARP
简单理解,就是利用JNI从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和响应性能,也是Tomcat运行高并发应用的首选模式。
4. AIO
异步非阻塞,使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分 调用OS参与并发操作,编程比较复杂,JDK7开始支持。tomcat8.0后支持。
一群人去办理,自己填单子,填好了自己去柜台,没有专门的人去询问。
配置方法:在tomcat conf 下找到server.xml
在<Connector port="8080" protocol="HTTP/1.1"/>标签中配置
BIO: protocol =" org.apache.coyote.http11.Http11Protocol"
NIO: protocol ="org.apache.coyote.http11.Http11NioProtocol"
AIO: protocol ="org.apache.coyote.http11.Http11Nio2Protocol"
APR: protocol ="org.apache.coyote.http11.Http11AprProtocol"二、Tomcat本身如何调优,涉及哪些参数
1. 架构/结构优化
动静分离,所谓动静分离就是将所有的静态资源的请求响应处理放在一个独立的服务器上,比如nginx(目前使用最 多的),tomcat只负责jsp和servlet的加载和处理。这样就能在一定程度上降低tomcat的压力。
2. 线程模型选择(IO优化)
线程模型在前面刚刚讲过,我们要根据自己的实际情况选择线程模型。这里再次强调一下,tomcat6默认就使用的BIO,而且也只有BIO。 tomcat7和tomcat8都开始支持APR模式,但是观察源码就会发现,tomcat7在没有APR配置的情况下会选择BIO。tomcat8在没有检测到APR配置的情况下会选择NIO。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中。 NIO是一个基于缓冲区、并能提供非阻塞I/O操作的Java API。适用于连接数目多且连接比较短(轻操作)的架构。 AIO(NIO2)方式使用于连接数目多且连接比较长(重操作)的架构,充分调用OS参与并发操作,编程比较复杂tomcat8
开始支持。
APR利用JNI调用本地API,大幅度提高了tomcat的IO性能,是tomcat的“大杀器”,但是如果要使用APR就要安装对应 的组件。
3. 并发优化(线程优化)
开启tomcat线程池,并且调优:
maxThreads:调整最大线程数量
minSpareThreads: 初始最小线程数量
4. Connector本身调优:
enableLookups="false" 关闭dns解析,减少性能损耗
minProcessors 服务器启动时创建的最少线程数
maxProcessors 最大可以创建的线程数
acceptCount="1000" 线程池中的线程都被占用,允许放到队列中的请求数其他优化: 禁用AJP连接器,使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用
学习更多JAVA知识与技巧,关注与私信博主(学习)
相关推荐
- 放置与召唤破解版(放置与召唤破解版无限)
-
放置与召唤辛弃疾很强,辛弃疾文武双全,物理攻击高,技能伤害大,非常强大。辛弃疾,原字坦夫,后改字幼安,号稼轩,山东东路济南府历城县人。南宋豪放派词人,人称“词中之龙”,与苏轼合称“苏辛”,与李清照并称...
- app下载注册(app下载注册d39qdf7)
-
1,电脑注册:打开QQ登录页面,点击立即注册。2,会弹出一个网页,填写上昵称、密码、手机号码等信息后,点击立即注册,即可注册QQ账号。3,手机注册,打开QQ进入登录页面,点击新用户注册。然后会提示输入...
- 第三方视频播放器哪个软件好
-
风雷影音播放器2.1.0.5风雷影音II独创双播放内核,聚合MPlayer和MPC强大优势功能,全面支持高清影片流畅播放,无需安装第三方软件,采用级联式多层过滤解码,全面提升影片兼容播放。能够完美播放...
- nba2k22安卓版下载(nba2k24苹果版下载免费)
-
①可能是下载的版本与手机系统不匹配,系统运行不了,用户无法进行安装和使用。②可能是网络线路方面的原因,用户在对其进行使用过程中,网络数据出现故障等情况。③软件厂商没有对安卓系统进行开发,导致安卓用户不...
- 手机勒索病毒下载(下载木马病毒)
-
下载抖音极速版是没有病毒的,抖音极速版就跟抖音一样,都是刷视频的一种娱乐软件而且两个软件都是一家公司开发的,抖音极速版刷视频还可以赚金币得现金,每天所赚的金币第二天凌晨系统会自动兑换成现金,很多人下载...
- store软件下载(store软件下载最新版)
-
在OPPO手机里应用商城里头搜索appstore都可以一键下载了,大家写下载的软件或者是APP都要在你手机里的应用商城里头下载,这样里头是没有木马和病毒的而且下载的都是正规的软件和APP,而且安装是...
- qq五笔输入法官方下载(qq五笔输入法手机版官方正式版)
-
打开应用安装目录,打开程序文件在里面再设置一下,让qq拼音为首选输入法,记住切换输入法的切换键,再不行的话从新安装一下即可遇到这种问题可以尝试以下几种办法:1、重装输入法并从重启一下电脑。有些输入法...
- 查找iphone官网入口(查找iphone官网入口的详细指南)
-
查找我的苹果官网入口:http://www.apple.com.cn/并点击页面右上角的技术支持选项。2.选择您要查询的设备比如说您要查询iPhone的话就选择iPhone3.在iPhone的技术支持...
-
- nba比赛直播(nba比赛直播免费观看直播jrs)
-
NBA比赛直播可以在多个渠道观看,包括电视、网络直播和手机应用等。在电视方面,国内的CCTV-5和湖南卫视等频道都有播出NBA比赛的节目;在网络直播方面,腾讯体育、优酷体育、爱奇艺体育等平台都有提供NBA比赛的直播服务;在手机应用方面,NB...
-
2026-01-21 14:03 off999
- 电脑版ps免费安装包(电脑免费安装photoshop)
-
1.在搜索引擎中输入adobe并点击搜索。2.点击adobe官网。3.点击支持并点击下载与安装。4.点击开始免费试用并点击下载。5.打开文件夹并点击打开进行安装即可。6.根据以上步骤即可下载安装ps。...
- cad制图手机版免费(手机cad制图软件中文免费2020年)
-
手机上看CAD图纸的软件有很多,应用商店一搜一大堆,有几个我觉得不错的,CAD迷你看图最早之前用过,安装包小,确实迷你,看一般小的图纸还可以,大了就不太好用,经常会卡。CAD快速看图,软件就像名字一样...
- 七龙珠游戏格斗手机版(七龙珠游戏格斗手机版破解版)
-
龙珠的卡带对打游戏一共有3个;FC的一个:天下第一武道会GBA两个:对决,舞空斗剧补充;SFC游戏超武斗传.已经知道了.....游戏平台为PS2(虽然wii也有点可能...)....里面龙珠系列的游...
- ocr文字识别(ocr文字识别软件)
-
从广义上说,OCR文字识别也算是人工智能技术,随处可见的人脸识别、OCR识别、指纹识别和虹膜识别技术等人工智能,错落应用在各大领域之中,促进当代企业服务向智能化、自动化转型。云脉OCR开发者平台开放人...
- 手机微信网页版登录(微博官网网页版入口)
-
手机微信网页登陆的入口:1、电脑浏览器地址输入wx点qq点com,回车进入微信网页版登录页;2、手机打开登录自己微信,打开扫一扫功能,扫描网页版上的二维码;3、然后手机点击确定,即可成功登录微信网页版...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
