发现并发容量问题---tomcat内嵌容器参数调整

Server端并发线程数上不去

当使用jemeter工具时,把请求线程数压上可以看到报错

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时服务端已经卡死

查看内嵌的tomcat的容器的配置

spring-configuration-metadata.json

//配置的端口号
  {
      "name": "server.port",
      "type": "java.lang.Integer",
      "description": "Server HTTP port.",
      "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties",
      "defaultValue": 8080
    },
// tomcat最小的线程的数量

{
      "name": "server.tomcat.min-spare-threads",
      "type": "java.lang.Integer",
      "description": "Minimum amount of worker threads.",
      "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties$Tomcat",
      "defaultValue": 10
    },
//tomcat的最大连接数

 {
      "name": "server.tomcat.max-connections",
      "type": "java.lang.Integer",
      "description": "Maximum number of connections that the server accepts and processes at any given time. Once the limit has been reached, the operating system may still accept connections based on the \"acceptCount\" property.",
      "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties$Tomcat",
      "defaultValue": 10000
    },
    //最大端的线程数
{
      "name": "server.tomcat.max-threads",
      "type": "java.lang.Integer",
      "description": "Maximum amount of worker threads.",
      "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties$Tomcat",
      "defaultValue": 200
    },

在这里插入图片描述

修改配置(显示)

设计到经验配置

在这里插入图片描述
==这里使用到线程池的工作策略,最小工作线程数100如果有很多链接则不断开,开到800再有的话则丢到等待队列;再有线程则卡死

重启应用

  • 查找进程 ps -ef | grep java
  • 杀死进程 kill 进程id
  • 开启进程 ./deploy.sh &
  • 查看此时线程的情况
    在这里插入图片描述
  • 查看开启线程的情况 pstree -p 线程id
    在这里插入图片描述

可以看出线程数增多了

定制化内嵌tomcat开发(修改keepAlive)

在这里插入图片描述

合理利用服务端的资源

  • 修改keepAlive

package com.zj.miaoshaproject.config;

import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.WebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;

/**
 * @Author Zhou  jian
 * @Date 2020 ${month}  2020/6/11 0011  21:52
 */
//当spring容器内每有TomcatEmbeddedServeletContainerFactort这个bean时
    //会把次bean加载进来
@Component
public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {


    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        //使用对应工厂类提供给我们的接口定制化我们的tomcat conerctor
        ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
               Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
               //定制化keepalivetimeout,设置30秒内没有请求则自动断开keepaliev连接
                protocol.setKeepAliveTimeout(3000);
                //当客户单发送超过10000非请求则自动断开keepAlive连接
                protocol.setMaxKeepAliveRequests(10000);

            }
        });

    }
}


存在问题

线程

在这里插入图片描述

  • 线程池要配置在合理的数量
  • 等待队列设置在1000-2000内

数据库 QPS查询优化

在这里插入图片描述
在这里插入图片描述

QPS

QPS一般是针对一个特定的查询,服务器在规定时间内(1秒)所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
一句话来说就是对应querys/sec,即针对查询,每秒的响应请求数,也即是最大吞吐能力。

TPS

Transactions Per Second(每秒传输的事物处理个数),即服务器每秒能处理的事务数。TPS经常包括数据的输入和输出,以及加上用户数据库访问或者一些rpc请求的时间。
TPS经常是业务核心逻辑测试结果的衡量单位。
一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算一个业务事务所使用的时间。
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值