<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      壓測和提高QPS

      壓測和提高QPS

      1.對項目的所有接口響應時間進行監控(使用攔截器,依賴swagger3增強版),將接口的響應時間統一控制在500毫秒內完成

      (1)swagger3增強版

      <dependency>
                  <groupId>com.github.xiaoymin</groupId>
                  <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
                  <version>4.1.0</version>
      </dependency>
      
      
      **
       * @author Yubo Huang
       * @date Created in  2024/11/10 10:05 上午
       * @description 文檔配置
       */
      @Configuration
      public class Knife4jConfig {
      
          @Bean
          public OpenAPI springShopOpenApi() {
              return new OpenAPI()
                      // 接口文檔標題
                      .info(
                              new Info().title("接口文檔")
                                      // 接口文檔簡介
                                      .description("Knife4j OpenApi3的接口文檔")
                                      // 接口文檔版本
                                      .version("v1.0")
                                      // 開發者聯系方式
                                      .contact(new Contact().name("").email(""))
                      );
          }
      }

      (2)攔截器

      import io.swagger.v3.oas.annotations.Operation;
      import io.swagger.v3.oas.annotations.tags.Tag;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      import lombok.extern.slf4j.Slf4j;
      import org.springframework.stereotype.Component;
      import org.springframework.web.method.HandlerMethod;
      import org.springframework.web.servlet.HandlerInterceptor;
      
      import java.lang.reflect.Method;
      
      /**
       * @author Yubo Huang
       * @date Created in  2024/11/10 9:17 上午
       * @description 響應時間
       */
      @Slf4j
      @Component
      public class ResTimeInterceptor implements HandlerInterceptor {
      
          private static final Long MAX_RES_TIME = 500L;
      
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
              long startTime = System.currentTimeMillis();
              request.setAttribute("startTime", startTime);
              return true;
          }
      
          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
              long startTime = (Long) request.getAttribute("startTime");
              long endTime = System.currentTimeMillis();
              long resTime = endTime - startTime;
              if (resTime < MAX_RES_TIME) {
                  return;
              }
      
              if (handler instanceof HandlerMethod handlerMethod) {
                  //controller
                  Class<?> beanType = handlerMethod.getBeanType();
                  //api
                  Method method = handlerMethod.getMethod();
                  //info
                  Tag tag = beanType.getAnnotation(Tag.class);
                  String name = tag.name();
                  Operation operation = method.getAnnotation(Operation.class);
                  String summary = operation.summary();
                  //log
                  String queryString = request.getQueryString();
                  log.warn("{} -> {} -> {} -> resTime:{} -> param:{}", name, summary, request.getRequestURI(), resTime, queryString);
              }
          }
      }

      (3).添加攔截器

      import com.yb.interceptor.ResTimeInterceptor;
      import lombok.RequiredArgsConstructor;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
      import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
      
      /**
       * @author Yubo Huang
       * @date Created in  2024/11/10 10:19 上午
       * @description web配置
       */
      @Configuration
      @RequiredArgsConstructor
      public class WebConfig implements WebMvcConfigurer {
      
          private final ResTimeInterceptor resTimeInterceptor;
      
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
              registry.addInterceptor(resTimeInterceptor);
          }
      
      }

      2.獨立的服務器或者虛擬機下進行(限制cpu和內存)
      3.新寫一個接口,接口中使用sleep休眠300毫秒(對該接口進行壓測)
      4.單個節點的項目調整(最大線程數和最大等待數),通過jmeter壓測到最大qps
      5.這就是服務器下該節點的最大QPS,根據需求增加服務器和項目節點就可以了
      6.當多個節點的QPS到達了需求,接下來還要考慮nginx的QPS和mysql的TPS,共同來支撐需求對應的QPS

      網絡的上行和下行是否影響QPS

      posted @ 2024-11-10 09:07  飯后咖啡  閱讀(45)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲の无码国产の无码步美| 永久免费的av在线电影网| 精品久久久中文字幕一区| 亚洲av片在线免费观看| 中文字幕无线码中文字幕免费| 少妇人妻综合久久中文字幕| 国产精品啪| 久久久久久久久久久免费精品| 2020国产欧洲精品网站| 成人国产乱对白在线观看| 亚洲熟妇丰满多毛xxxx| 一个色综合亚洲热色综合| 玩弄放荡人妻少妇系列| 亚洲中文久久久精品无码| 波多野结衣av一区二区三区中文| 久久三级国内外久久三级| 国产精品无码av不卡| 二区中文字幕在线观看| 亚洲成人av免费一区| 40岁大乳的熟妇在线观看| 亚洲欧美精品一中文字幕| 久久天天躁夜夜躁狠狠| 高中女无套中出17p| 最新高清无码专区| 视频一区二区三区四区五区 | 国产专区一va亚洲v天堂| 人妻少妇精品系列| 亚洲自拍偷拍中文字幕色| 精品久久人人做爽综合| 成人无码区免费视频| 久久久久夜夜夜精品国产| 成人精品一区日本无码网| 国产高清精品在线91| 久久精品亚洲中文字幕无码网站| 国产国亚洲洲人成人人专区| 精品国产精品中文字幕| 日本一区二区在线高清观看| 亚洲综合色网一区二区三区| 久久精品国产亚洲精品色婷婷| 免费无遮挡毛片中文字幕| 粗壮挺进人妻水蜜桃成熟|