- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Tomcat 容器内的优化
一、 tomcat的3种运行模式
1、 bio
默认的模式,性能非常低下,没有经过任何优化处理和支持. 一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。
2、 nio
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文件,定位到这一行:
Connector port=8080 protocol=HTTP/1.1
connectionTimeout=20000
redirectPort=8443 /
将其修改为
Connector port=8080 protocol=org.apache.coyote.http11.Http11NioProtocol
connectionTimeout=20000
redirectPort=8443 /
3、apr
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.即Apache Portable Runtime,从操作系统层面解决io阻塞问题。Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。Linux如果安装了apr和native,Tomcat直接启动就支持apr。具体安装办法 参见这个地址: /lsw90/blog/181161
4、 在那里看我们的tomcat以何种工作模式启动的?
Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:Starting ProtocolHandler [http-bio-8080]Starting ProtocolHandler [http-nio-8080]Starting ProtocolHandler [http-apr-8080]
二、 执行器(线程池)
默认的tomcat没有启用线程池
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。这里前台其实有一个调度线程,然后调度线程会放入线程池内,然后到到一定的时候线程池的任务变成工作线程
1、开启并使用
打开 tomcat 安装目录 \conf\server.xml文件,找到下面这段注释并打开:
!--
Executor name=tomcatThreadPool namePrefix=catalina-exec-
maxThreads=150 minSpareThreads=4/
--
然后找到下面的这个配置,注释掉上面的 Connector ,打开下面被注释掉的 Connector
Connector port=8080 protocol=HTTP/1.1
connectionTimeout=20000
redirectPort=8443 /
!-- A Connector using the shared thread pool--
!--
Connector executor=tomcatThreadPool
port=8080 protocol=HTTP/1.1
connectionTimeout=20000
redirectPort=8443 /
--
2、参数说明
Attribute
Description
threadPriority (优先级)
(int)线程的线程优先级执行程序,默认是5(NORM_PRIORITY常数)
daemon(守护进程)
(boolean)是否应该守护程序线程,线程默认是true
namePrefix(名称前缀)
(String) The name prefix for each thread created by the executor. The thread name for an individual thread will be namePrefix+threadNumber
maxThreads(最大线程数)
(int) The max number of active threads in
文档评论(0)