• 第三章 2.性能压测,容量问题


    1.查看进程使用情况

    ps -ef | grep java   ----查看进程号,30589

    netstat -anp | grep 30589---查看该进程的使用情况

    pstree -p 30589 | wc -l    ----查看线程数

    top -H  -----查看CPU使用情况

    [root@iZbp1dtm752cu7uoi7cj5fZ ~]# top -H

    top - 21:24:17 up 4 days, 1:57, 2 users, load average: 0.00, 0.01, 0.05
    Threads: 152 total, 1 running, 151 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    KiB Mem : 1882084 total, 66580 free, 521380 used, 1294124 buff/cache
    KiB Swap: 0 total, 0 free, 0 used. 1184892 avail Mem

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1 root 20 0 51620 3892 2616 S 0.3 0.2 0:37.90 systemd
    14012 mysql 20 0 1186092 91228 9156 S 0.3 4.8 0:23.60 mysqld
    30598 root 20 0 2461020 365748 13416 S 0.3 19.4 0:49.64 java

    2.修改tomcat默认配置

    /META-INF/spring-configuration-metadata.json 文件中

    server.tomcat.accept-count:100  等待队列长度

    server.tomcat.max-connections:10000 最大可被连接数

    server.tomcat.max-threads:200  最大工作线程数

    server.tomcat.min-spare-threads:10 最小工作线程数

    默认配置下,连接超过10000拒绝连接

    默认配置下,触发请求超过200+100后拒绝处理

    4G 8核最佳配置为 server.tomcat.max-threads=800,server.tomcat.min-spare-threads=100

    修改完后,重启,发现线程数量上升了,之前32

    [root@iZbp1dtm752cu7uoi7cj5fZ ~]# pstree -p 4203 | wc -l
    115

    3.定制化内嵌tomcat配置

    有些配置没有提供给application.properties配置,需要使用WebServerFactoryCustomizer<ConfigurableWebServerFactory>来定制化配置

    @Component
    public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory>{
    
        @Override
        public void customize(ConfigurableWebServerFactory factory) {
            // 使用工厂类提供的接口定制我们的tomcat connector server.context.xml文件中配置
            // TODO Auto-generated method stub
            ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
                
                @Override
                public void customize(Connector connector) {
                    Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler();
                    // 定制化KeepAliveTimeout,30秒内没有请求则服务自动断开KeepAlive连接
                    protocol.setKeepAliveTimeout(30000);
                    // 当客户端发送超过10000个请求后断开KeepAlive连接
                    protocol.setMaxKeepAliveRequests(10000);
                    
                }
            });
        }
        
    }
  • 相关阅读:
    Core Api跨域问题解决
    文件夹浏览权限
    反射(C#基础回顾04)
    二维码扫码问题
    MVC接口跨域问题
    27.用户注册场景:数据验证(2):自定义验证tag、正则验证
    26.用户注册场景:数据验证(1):第三方验证库、自定义错误信息
    25.引入gorm,用户数据入库
    24.场景练习,基本接口(用户注册接口)
    22.使用Micro为我们的rpc服务创建http api网关
  • 原文地址:https://www.cnblogs.com/t96fxi/p/11964253.html
Copyright © 2020-2023  润新知