之前项目一直在tomcat下开发,后来在上线之前,需要进行性能安全测试,可是测试的同事反应,登陆口线程并发一多的时候,系统立马就没法登陆了。

中间件是tomcat6.  tomcat的日志总是简洁的很,在控制台只发现一句 超过系统最大线程的错误。系统并没有死,只是不再响应了。开始以为是线程池满了的原因

后来调整了也还是这个错误,而且jvm也很正常。后来排查到最后,发现是系统基础平台那边的一个bug,升级了相应的jar包后就好了。

升级后,在不对tomcat进行线程池优化的前提下,还是会报出超过最大线程的警告,tomcat默认的最大线程是200.

因此调整了一下。


  1. <Connector port="8081"
  2. redirectPort="18443"
  3. protocol="org.apache.coyote.http11.Http11Protocol"
  4. URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"
  5. enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
  6. acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5"
  7. useURIValidationHack="false"
  8. compression="on" compressionMinSize="2048"
  9. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  10. />

protocol="org.apache.coyote.http11.Http11Protocol"    这句指定当前的访问协议,必须要写全,在tomcat 6.0.44 下不写全,会报一个警告,警告下面的参数无法识别。

几个主要的参数:


  1. minSpareThreads="25" 线程池中最小的线程数
  2. maxSpareThreads="75" 线程池中最大的不活动线程数
  3. maxThreads="300" 启动的用来接收请求的线程的最大数。即最大线程响应数目。最大并发数。
  4. acceptCount="300" 当上面的并发数达到限值后,剩余的请求将被放置到一个队列中,该数目代表该队列的最大值,超过则拒绝对应请求。
  5. enableLookups="false"
  6. disableUploadTimeout="true"
  7. connectionTimeout="20000"
  8. maxProcessors="1000"
  9. minProcessors="5"
  10. useURIValidationHack="false"
  11. compression="on"
  12. compressionMinSize="2048"
  13. 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线程池调优的更多相关文章

  1. JAVA线程池调优

        在JAVA中,线程可以使用定制的代码来管理,应用也可以利用线程池.在使用线程池时,有一个因素非常关键:调节线程池的大小对获得最好的性能至关重要.线程池的性能会随线程池大小这一基本选择而有所不同 ...

  2. Tomcat 连接池调优

    性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...

  3. HIkari线程池调优

    <!-- Hikari Datasource --> <bean id="dataSourceHikari" class="com.zaxxer.hik ...

  4. 详解Tomcat线程池原理及参数释义

    omcat线程池有如下参数: maxThreads, 最大线程数,tomcat能创建来处理请求的最大线程数 maxSpareTHreads, 最大空闲线程数,在最大空闲时间内活跃过,但现在处于空闲,若 ...

  5. Tomcat线程池的深入理解

    1.工作机制: Tomcat启动时如果没有请求过来,那么线程数(都是指线程池的)为0: 一旦有请求,Tomcat会初始化minSpareThreads设置的线程数: 2.线程池作用: Tomcat的线 ...

  6. 05 - Tomcat 线程池的配置与优化

    添加 Executor 在server.xml中的Service节点里面,增加executor节点,然后配置connector的executor属性,如下: <Executor name=&qu ...

  7. tomcat线程池

    tomcat线程池和普通的线程池设计上有所区别,下面主要来看看它是如何设计的 tomcat中线程池的创建 org.apache.tomcat.util.net.AbstractEndpoint#cre ...

  8. Tomcat系列(9)——Tomcat 6方面调优(内存,线程,IO,压缩,缓存,集群)

    核心部分 内存 线程 IO 压缩 缓存 集群 一.JVM内存优化 Tomcat内存优化,包括内存大小,垃圾回收策略. Windows 下的catalina.bat,Linux 下的catalina.s ...

  9. Tomcat线程池与NIO配置

    每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换. 而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受 ...

随机推荐

  1. Spark-Streaming kafka count 案例

    Streaming 统计来自 kafka 的数据,这里涉及到的比较,kafka 的数据是使用从 flume 获取到的,这里相当于一个小的案例. 1. 启动 kafka Spark-Streaming ...

  2. 深度讨论i++问题

    例题1:下列程序的输出结果是多少? public class Test { static { int x = 5; } static int x, y; public static void main ...

  3. Shiro安全框架案例

    基于Shiro的用户认证(不包含授权) Spring整合Shiro shiro原理 1.1   搭建环境 1.1.1      web模块 pom.xml <dependency> < ...

  4. 在js中添加HTML类样式

    有时候需要给元素添加类样式,但又要保留之前的类,可以使用element.classList.add("类名");

  5. php 把数字转化为大写中文—升级版

    继上篇之后,发现某同事悄悄改了新版本,于是被我偷偷保存起来了,功能一样,不过他的比较短小,emmm.放了快一年了,悄悄放到博客里面. 功能需求在另一篇博客里 <?php function cny ...

  6. Unity3D新手入门初级教程

    根据游戏调查公司 Newzoo 针对全球手机游戏市场所做的调查报告显示,2016年全球游戏市场规模将达到 996 亿美元,其中手机游戏市场将以 21.3% 的增幅获得约 369 亿美元的收入,而中国手 ...

  7. ---iOS开发 截取字符串中两个指定字符串中间的字符串---

    例如,要截取一个字符串中,两个指定字符串中间的字符串,OC截取方法如下: // 要截取 "> 和 </ 之间的汉字内容: @implementationViewControlle ...

  8. bugclose使用—bug管理工具

    1.前言 bugclose管理的是BUG,而不仅仅是bug.BUG概念是bugclose的创造,代表团队工作的对象,包括缺陷,任务和需求. 2.bugclose访问地址 访问地址:https://ww ...

  9. 【Python学习之七】类和对象

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.面向对象编程1.概念(1)面向对象编程(OOP ...

  10. git删除远程.idea目录

    git删除远程.idea目录 1. 登录 Administrator@USER-20180708AB MINGW32 / (master) $ git config --global user.nam ...