首页 > 其他分享 >tomcat并发优化

tomcat并发优化

时间:2022-11-24 19:13:30浏览次数:33  
标签:false tomcat true text 并发 线程 acceptCount 优化

tomcat并发调优

展开

1.场景还原

 

    近期笔者在线上项目中遇到了tomcat假死的现象,服务器相关配置均属正常,但是app访问速度很慢;于是笔者想出两种解决方案:①nginx+tomcat实现负载均衡;②对tomcat并发调优,此前笔者nginx+tomcat负载均衡调优已经实现,今天就tomcat并发调优作个分享

2.实现方案

 

①编辑tomcat/conf/server.xml

 

将默认配置

 

    <Connector port="8085" protocol="HTTP/1.1"

    connectionTimeout="20000"

    redirectPort="8443" />

 

改为如下优化后的配置

 

    <Connector port="8085" protocol="HTTP/1.1"

    connectionTimeout="5000"

    redirectPort="18443"

    maxThreads="2000"

    minSpareThreads="100"

    maxSpareThreads="1000"

    minProcessors="100"

    maxProcessors="1000"

    enableLookups="false"

    compression="on"

    compressionMinSize="2048"                                                                                                                                                                                                                                                     compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"                                                                                                                                                                                                 URIEncoding="utf-8"

    acceptCount="1000"                                                                                                                                                                                                                                                            disableUploadTimeout="true"/>

    disableUploadTimeout="true"/>

 

②参数解释

 

    (1)URIEncoding=”UTF-8”

    使得tomcat可以解析含有中文名的文件的url

     

    (2)minSpareThreads

    最小备用线程数,tomcat启动时的初始化的线程数,默认10.

     

    (3)maxSpareThreads

    最大备用线程数,tomcat启动时的初始化的线程数

     

    (4)enableLookups

    如果希望调用request.getRemoteHost()进行DNS查询,以返回远程客户的实际主机名,将enableLookups设为true。如果希望忽略DNS查询,仅仅返回IP地址,设为false(这样提高了性能), 缺省情况下,DNS查询是使能的。一句话:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false

    (5)disableUploadTimeout    disableUploadTimeout="true"

    类似于Apache中的keeyalive一样,是否需要tomcat容器单独设置上传时间限制,这里是不用,还是使用标准的,不去给上传的附件单独做超时设置。

     

    (6)connectionTimeout

    connectionTimeout:网络连接超时,单位毫秒。设置为 -1 表示永不超时。

     

    (7)acceptCount

    acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection.

    一句话:acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数,默认100。

     

    (8)maxThreads

    maxThreads:最大线程数,即同时处理的任务个数,默认值为200 , Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数,即最大并发数。保守推荐:600---900。

     

    (9)maxProcessors

    与下面minProcessors相对应,具体解释看下面。

     

    (10)minProcessors

    在 Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。通常Windows是1000个左右,Linux是2000个左右。

     

    (11)useURIValidationHack

    减少它对一些url的不必要的检查从而减省开销,为提供性能可以设置为false

     

    (12)compression

    compression :设置是否开启GZip压缩

    HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

     

    (13)compressionMinSize

    compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB

     

    (14)compressableMimeType

    compressableMimeType:哪些类型需要压缩,默认是text/html,text/xml,text/plain

标签:false,tomcat,true,text,并发,线程,acceptCount,优化
From: https://www.cnblogs.com/Lqdream/p/16922882.html

相关文章

  • tomcat调优
    将原有的Executor标签内容替换成如下内容<Executorname="tomcatThreadPool"--线程池名 namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="30" m......
  • 启动tomcat的时候一直卡在INFO: Deploying web application
    在用centos7.+不熟tomcat项目的时候,启动时突然很奇怪的没报错,但是又访问不了网址,调用​​./shutdown.sh​​又结束不了,一直出现:java.net.ConnectException:Connectionrefu......
  • 服务器配置nginx和tomcat都使用https协议
    如果服务器需要配置https协议,我们很容易的在nginx上加入相应的证书配置就可以实现,但是如果我们服务器的环境有php和Java这两种的话,而Java使用的是tomcat容器,但是又想实现两......
  • mysql索引和性能优化
    使用索引的原则1.如果没有唯一性要求,可以选择普通索引2.如果列上有唯一性要求,可以选择唯一索引3.如果是需要模糊搜索,建议选择全文索引4.如果有多个条件一起查......
  • 浅谈web性能优化(一)
    压力测试        在浅谈性能优化之前呢,先介绍一下压力测试。项目在上生产环境之前呢,需要先进行压力测试,模拟并发,看看系统的吞吐量大概是多少,告知运维人员的系统吞吐......
  • 一文详解GaussDB(DWS) 的并发管控和内存管控
    摘要:DWS的负载管理分为两层,第一层为cn的全局并发控制,第二层为资源池级别的并发控制。本文分享自华为云社区《GaussDB(DWS)并发管控&内存管控》,作者:fighttingman。1背景......
  • 一文详解GaussDB(DWS) 的并发管控和内存管控
    摘要:DWS的负载管理分为两层,第一层为cn的全局并发控制,第二层为资源池级别的并发控制。本文分享自华为云社区《​​GaussDB(DWS)并发管控&内存管控​​》,作者:fighttingman。......
  • 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观
    本站文章均为​​ 李华明Himi ​​​原创,转载务必在明显处注明:​​​​​1. 循环分页或者循环进行部分读取处理数据的时候,使用session.clear(); 2.  对应1+N(N+......
  • 【Java Servlet 开发系列之一】在mac系统安装Apache Tomcat的详细步骤
    本站文章均为​​ 李华明Himi ​​​原创,转载务必在明显处注明:对于ApacheTomcat估计很多童鞋都会,那么今天就简单说下在mac上进行tomcat的安装;  第一步:下载Tomcat ......
  • 检测内存泄漏、优化的常用手法[笔记]
    可视化自动内存泄漏检测//debugImplementation'com.squareup.leakcanary:leakcanary-android:2.3'///屏蔽提升操作速度,开启后不需要任何代码的。原理是内容提供者开......