tomcat线程池调优
之前项目一直在tomcat下开发,后来在上线之前,需要进行性能安全测试,可是测试的同事反应,登陆口线程并发一多的时候,系统立马就没法登陆了。
中间件是tomcat6. tomcat的日志总是简洁的很,在控制台只发现一句 超过系统最大线程的错误。系统并没有死,只是不再响应了。开始以为是线程池满了的原因
后来调整了也还是这个错误,而且jvm也很正常。后来排查到最后,发现是系统基础平台那边的一个bug,升级了相应的jar包后就好了。
升级后,在不对tomcat进行线程池优化的前提下,还是会报出超过最大线程的警告,tomcat默认的最大线程是200.
因此调整了一下。
-
<Connector port="8081"
-
redirectPort="18443"
-
protocol="org.apache.coyote.http11.Http11Protocol"
-
URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"
-
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
-
acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5"
-
useURIValidationHack="false"
-
compression="on" compressionMinSize="2048"
-
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
-
/>
protocol="org.apache.coyote.http11.Http11Protocol" 这句指定当前的访问协议,必须要写全,在tomcat 6.0.44 下不写全,会报一个警告,警告下面的参数无法识别。
几个主要的参数:
-
minSpareThreads="25" 线程池中最小的线程数
-
maxSpareThreads="75" 线程池中最大的不活动线程数
-
maxThreads="300" 启动的用来接收请求的线程的最大数。即最大线程响应数目。最大并发数。
-
acceptCount="300" 当上面的并发数达到限值后,剩余的请求将被放置到一个队列中,该数目代表该队列的最大值,超过则拒绝对应请求。
-
enableLookups="false"
-
disableUploadTimeout="true"
-
connectionTimeout="20000"
-
maxProcessors="1000"
-
minProcessors="5"
-
useURIValidationHack="false"
-
compression="on"
-
compressionMinSize="2048"
-
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
通过上面的调整, tomcat在持续并发300的情况下,响应是很不错的。 可以通过tomcat自己的控制台,用jemeter模拟了1s1000个线程, 看到tomcat的busy 线程持续在300,证明,上面的调优后,并发300 tomcat完全没问题。
原文地址:https://blog.csdn.net/lxl631/article/details/50010123
tomcat线程池调优的更多相关文章
- JAVA线程池调优
在JAVA中,线程可以使用定制的代码来管理,应用也可以利用线程池.在使用线程池时,有一个因素非常关键:调节线程池的大小对获得最好的性能至关重要.线程池的性能会随线程池大小这一基本选择而有所不同 ...
- Tomcat 连接池调优
性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...
- HIkari线程池调优
<!-- Hikari Datasource --> <bean id="dataSourceHikari" class="com.zaxxer.hik ...
- 详解Tomcat线程池原理及参数释义
omcat线程池有如下参数: maxThreads, 最大线程数,tomcat能创建来处理请求的最大线程数 maxSpareTHreads, 最大空闲线程数,在最大空闲时间内活跃过,但现在处于空闲,若 ...
- Tomcat线程池的深入理解
1.工作机制: Tomcat启动时如果没有请求过来,那么线程数(都是指线程池的)为0: 一旦有请求,Tomcat会初始化minSpareThreads设置的线程数: 2.线程池作用: Tomcat的线 ...
- 05 - Tomcat 线程池的配置与优化
添加 Executor 在server.xml中的Service节点里面,增加executor节点,然后配置connector的executor属性,如下: <Executor name=&qu ...
- tomcat线程池
tomcat线程池和普通的线程池设计上有所区别,下面主要来看看它是如何设计的 tomcat中线程池的创建 org.apache.tomcat.util.net.AbstractEndpoint#cre ...
- Tomcat系列(9)——Tomcat 6方面调优(内存,线程,IO,压缩,缓存,集群)
核心部分 内存 线程 IO 压缩 缓存 集群 一.JVM内存优化 Tomcat内存优化,包括内存大小,垃圾回收策略. Windows 下的catalina.bat,Linux 下的catalina.s ...
- Tomcat线程池与NIO配置
每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换. 而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受 ...
随机推荐
- 去参加了十四届D2前端大会~
朋友喊我去一起去d2,原来一直在加班,没有想去的动力,后来业务上线,幸运的入手了别人转的一张票(也不便宜啊)- 讲了五个挑战 端侧渲染体系的重塑,从PC时代到无线时代,再到未来的IOT时代,在渲染方面 ...
- fillter根据value来匹配字段
字段对应 let cashBackState = { 'WAIT_FIVE': '满5单可返现', 'FINISHED': '已返现' } filters: { cashBackStateFilter ...
- SDN阅读作业
阅读文章<软件定义网络(SDN)研究进展>,并根据所阅读的文章,书写一篇博客,回答以下问题(至少3个): 1.为什么需要SDN?SDN特点? 随着网络规模的不断扩大,传统网络设备繁复的协议 ...
- SSH框架整合1
======================web.xml======================= <?xml version="1.0" encoding=" ...
- 【2019】Charles视频教程,接口测试工具最新教程
Charles 是在 windows/mac/linux下常用的网络封包截取工具,也是电商/直播/搜索/金融/H5/App等测试专用接口测试工具. Charles 支持Http/Https/Webso ...
- hotspot编译
"AA=="1",==", /usr/bin/make -s VERBOSE="-s" LOG_LEVEL="warn" ...
- jQuery跳出each循环:JS报错:illegal break statement
今天在JS中运用jquery中each写一个简单的循环语句时,在执行跳出循环操作时,遇到JS报错:Uncaught SyntaxError: illegal break statement 非法的br ...
- Linux下限制某程序CPU占用
CentOS 7下CPULimit的部署与使用途中 部署 git clone https://github.com/opsengine/cpulimit.git cd cpulimit make cp ...
- VBA 如何检测一个中文字符串是否包含在另一个字符串中
Sub test() aaa = "江苏省南京市建邺区水西门大街34号" If InStr(aaa, Then MsgBox "在里面" Else MsgBox ...
- debug console不见了
点击左侧这个标志.