jvm tomcat调优实战经验记录

jvm tomcat调优实战经验记录

Tomcat 调优

一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
       QPS(TPS):每秒钟request/事务 数量
       并发数: 系统同时处理的request/事务数
       响应时间: 一般取平均响应时间
       QPS(TPS) = 并发数 / 平均响应时间
       例如:这里设置的jvm的maxThread是20

在这里插入图片描述
       那对应的TPS = 20 / 0.2 = 100

在这里插入图片描述
       在nacos中的tomcat线程设置调优
       server.tomcat.max-threads = 50
       server.tomcat.max-connections = 100
       server.tomcat.accept-count = 100

jvm具体参数详解

acceptCount : 最大等待数
       即当所有的请求处理线程都在使用时,所能接受的连接的队列的最大长度。当队列已满时,所有的连接请求都会被拒接,默认为100;
       详细的说就是当调用HTTP请求数打到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat就会将该请求放入等待队列中,
       这个acceptCount就是指能够接受的最大等待数,默认为100。如果等待队列满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)

maxThreads:最大线程数
       每次一HTTP请求到达时,tomcat都会创建一个线程来处理该请求,所以最大线程数决定了服务器容器可以同时处理多少个请求。
       maxThreads默认为200,建议增加,但是增加更多的线程就意味着带来更多的内存消耗,也带来了更多的线程上下文切换成本。
       jvm中在默认情况下会在创建线程时分配1M的线程栈。

maxConnections:最大连接数
       指在同一时间,tomcat能够接受的最大连接数,在java新的NIO模式中,默认值为10000,当连接数到达最大值maxConnections后,系统会继续接受连接,但不会超过acceptCount的值

maxConnections、maxThreads、acceptCount关系

       用一个形象的比喻,通俗易懂的解释一下tomcat的最大线程数(maxThreads)、最大等待数(acceptCount)和最大连接数(maxConnections)三者之间的关系。我们可以把tomcat比做一个火锅店,流程是取号、入座、叫服务员,可以做一下三个形象的类比:

(1)acceptCount 最大等待数

       可以类比为火锅店的排号处能够容纳排号的最大数量;排号的数量不是无限制的,火锅店的排号到了一定数据量之后,服务往往会说:已经客满。

(2)maxConnections 最大连接数

       可以类比为火锅店的大堂的餐桌数量,也就是可以就餐的桌数。如果所有的桌子都已经坐满,则表示餐厅已满,已经达到了服务的数量上线,不能再有顾客进入餐厅了。

(3)maxThreads:最大线程数

       可以类比为厨师的个数。每一个厨师,在同一时刻,只能给一张餐桌炒菜,就像极了JVM中的一条线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值