zoukankan      html  css  js  c++  java
  • 第三章 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);
                    
                }
            });
        }
        
    }
  • 相关阅读:
    异常练习一 throw
    MAP排序
    Java正则表达式应用详解
    java多线程 sleep()和wait()的区别
    面向对象的15、18位中国大陆身份证号码解析、工具
    java学习笔记--this 关键字的理解
    Java六大问题你都懂了吗?
    Java类的声明和访问介绍
    java的五种数据类型解析
    Java集合框架的总结
  • 原文地址:https://www.cnblogs.com/t96fxi/p/11964253.html
Copyright © 2011-2022 走看看