精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

性能優化!七個策略,讓Spring Boot 處理每秒百萬請求

人工智能 機器學習
在實施任何優化前,我首先明確了性能基準。這一步至關重要——若不清楚起點,便無法衡量進展,也無法定位最關鍵的改進方向。

環境:SpringBoot3.4.2

1. 簡介

在實施任何優化前,我首先明確了性能基準。這一步至關重要——若不清楚起點,便無法衡量進展,也無法定位最關鍵的改進方向。以下是我們的初始性能指標概況:

最大吞吐量:50,000 次請求/秒

平均響應時間:350 毫秒

95 分位響應時間:850 毫秒

峰值時段 CPU 使用率:85%-95%

內存占用:堆內存使用達可用空間的 75%

數據庫連接:頻繁達到連接池上限(100 )

線程池飽和:線程池資源經常耗盡

以上指標通過如下的工具進行收集所得:

  • JMeter用于負載測試,確定基礎吞吐量數值
  • Micrometer + Prometheus + Grafana實現實時監控與可視化
  • JProfiler深入分析代碼中的性能熱點
  • 火焰圖(Flame graphs)定位 CPU 密集型方法 

根據上面的指標總結如下性能瓶頸:

  • 線程池飽和默認的 Tomcat 連接器已達到性能上限
  • 數據庫連接爭用HikariCP 連接池配置未針對實際負載優化
  • 序列化效率低下Jackson 在請求/響應處理中消耗大量 CPU 資源
  • 阻塞式 I/O 操作尤其在調用外部服務時表現明顯
  • 內存壓力過度對象創建導致頻繁的 GC 停頓 

接下來,我們將逐一的解決上面的問題。

2. 性能優化

2.1 使用響應式編程

阻塞方式:

@Service
public class ProductService {
  private final ProductRepository productRepository ;
  public ProductService(ProductRepository productRepository) {
    this.productRepository = productRepository ;
  }
  public Product getProductById(Long id) {
    return repository.findById(id)
      .orElseThrow(() -> new ProductNotFoundException(id)) ;
  }
}

基于響應式改造:

@Service
public class ProductService {
  private final ProductRepository productRepository ;
  public ProductService(ProductRepository productRepository) {
    this.productRepository = productRepository ;
  }
  public Product getProductById(Long id) {
    public Mono<Product> getProductById(Long id) {
      return productRepository.findById(id)
        .switchIfEmpty(Mono.error(new ProductNotFoundException(id)));
    }
  }
}

同時Controller層也需要改造

@RestController
@RequestMapping("/products")
public class ProductController {
  private final ProductService productService;
  public ProductController(ProductService productService) {
    this.productService = productService ;
  }
  @GetMapping("/{id}")
  public Mono<ResponseEntity<Product>> getProduct(@PathVariable Long id) {
    return service.getProductById(id)
      .map(ResponseEntity::ok)
      .defaultIfEmpty(ResponseEntity.notFound().build());
  }
}

注意,對應依賴方面你需要引入如下相關的依賴:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-r2dbc</artifactId>
</dependency>
<!--基于響應式的mysql驅動包-->
<dependency>
  <groupId>com.github.jasync-sql</groupId>
  <artifactId>jasync-r2dbc-mysql</artifactId>
  <version>2.1.24</version>
</dependency>

總結:僅這一項改動便使吞吐量翻倍,其核心在于更高效地利用線程資源。WebFlux 不再為每個請求分配獨立線程,而是通過少量線程處理海量并發請求。

有關響應式編程,請查看下面文章:

新一代WebFlux框架核心技術Reactor響應式編程基本用法

響應式編程引領未來:WebFlux與R2DBC的完美結合實現數據庫編程

SpringBoot3虛擬線程 & 反應式(WebFlux) & 傳統Tomcat線程池 性能對比

新一代web框架WebFlux到底要不要學?

2.2 數據庫優化

數據庫交互成為下一個關鍵性能瓶頸。我采用了三管齊下的優化策略:

  • 查詢優化

我使用 Spring Data 的 @Query 注解取代了低效的自動生成查詢:

優化前:

List<Order> findByUserIdAndStatusAndCreateTimeBetween(
    Long userId, OrderStatus status, 
    LocalDate start, LocalDate end) ;

優化后:

@Query("SELECT o FROM Order o WHERE o.userId = :userId " +
       "AND o.status = :status " +
       "AND o.createdDate BETWEEN :start AND :end " +
       "ORDER BY o.createdDate DESC")
List<Order> findUserOrdersInDateRange(
    @Param("userId") Long userId, 
    @Param("status") OrderStatus status,
    @Param("start") LocalDate start, 
    @Param("end") LocalDate end) ;

使用 Hibernate 的 @BatchSize 優化 N+1 查詢:

@Entity
@Table(name = "t_order")
public class Order {
  // ...
  @OneToMany(mappedBy = "order", fetch = FetchType.EAGER)
  // 批量抓取數據
  @BatchSize(size = 30)
  private Set<OrderItem> items ;
}
  • 連接池優化

HikariCP 的默認設置造成了連接爭用。經過大量測試,我得出了這樣的配置(實際要根據自己的環境):

spring:
  datasource:
    hikari:
      maximum-pool-size: 100
      minimum-idle: 50
      idle-timeout: 30000
      connection-timeout: 2000
      max-lifetime: 1800000

關鍵的一點是,連接數并不總是越多越好;這里的hikari可不支持響應式。所以,我們應該吧響應式與阻塞式2種方式進行分開處理。

基于響應式數據庫的配置如下:

spring:
  r2dbc:
    pool:
      initialSize: 30
      maxSize: 10
      max-acquire-time: 30s 
      max-idle-time: 30m
  • 使用緩存

對于頻繁訪問的數據添加了 Redis 緩存。

// 開啟
@Configuration
@EnableCaching
public class CacheConfig {
}
// 使用緩存
@Service
public class ProductService {
  @Cacheable(value = "products", key = "#id")
  public Mono<Product> getProductById(Long id) {
    return repository.findById(id)
        .switchIfEmpty(Mono.error(new ProductNotFoundException(id)));
  }
  @CacheEvict(value = "products", key = "#product.id")
  public Mono<Product> updateProduct(Product product) {
    return repository.save(product) ;
  }
}

配置緩存:

spring:
  cache:
    type: redis
    redis:
      cache-null-values: false
      time-to-live: 120m

需要更多個性化配置,可以自定義RedisCacheManager。

2.3 序列化優化

通過優化jackson序列化,可以明顯減少CPU的占用。

@Configuration
public class JacksonConfig {
  @Bean
  public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper() ;
    // 啟用 Afterburner 模塊以加速序列化
    mapper.registerModule(new AfterburnerModule()) ;
    // 僅僅序列化不為空的字段
    mapper.setSerializationInclusion(Include.NON_NULL) ;
    // 禁用不需要的功能
    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) ;
    mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) ;
    return mapper ;
  }
}

如果對部分接口要求非常高,那么可以采用Protocol Buffers。

關于Protocol Buffers的使用,請查看下面文章:

接口優化!Spring Boot 集成 Protobuf 并使用 RestTemplate 實現微服務間通信

基于 Spring Boot 實現自定義二進制數據傳輸協議

2.4 線程池&連接優化

有了 WebFlux,我們需要調整 Netty 的事件循環設置:

spring:
  reactor:
    netty:
      worker:
        count: 32  #工作線程數(2 x CPU cores)
      connection:
        provider:
          pool:
            max-connections: 10000
            acquire-timeout: 5000

對于使用 Spring MVC 的,調整 Tomcat 連接器:

server:
  tomcat:
    threads:
      max: 200
      min-spare: 50
    max-connections: 8192
    accept-count: 100
    connection-timeout: 5000

這些設置使我們能夠以較少的資源處理更多的并發連接。

2.5 基于 Kubernetes 的橫向擴展:終極解決方案 

通過橫向擴展提升系統容量。將應用容器化后部署至 Kubernetes 集群。

FROM openjdk:17-slim
COPY target/product-app.jar app.jar
ENV JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled"
ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar

然后根據 CPU 利用率配置自動縮放:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: product-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    #目標 Deployment 的名稱(即需要被擴縮容的應用)
    name: product-app
  #副本數范圍限制5~20
  minReplicas: 5
  maxReplicas: 20
  #定義觸發擴縮容的指標規則
  metrics:
  - type: Resource #使用資源指標(如 CPU、內存)
    resource:
      name: cpu #監控 CPU 資源使用率
      target:
        type: Utilization #指標類型為“利用率百分比”
        #當持續超過 70% 時觸發擴縮容
        averageUtilization: 70

利用 Istio 實施服務網格功能,以實現更好的流量管理:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: product-vs
spec:
  hosts:
  - product-service  # 目標服務名(需與 Istio 服務網格中注冊的名稱一致)
  http:  # 定義 HTTP 協議相關的流量規則(支持路由、重試、超時等策略)
  - route:  # 配置流量路由規則
    - destination:  # 指定流量的實際目的地
        host: product-service  # 目標服務名
    retries:  # 設置請求失敗時的重試策略
      attempts: 3  # 最大重試次數(首次請求 + 3次重試 = 最多4次嘗試)
      perTryTimeout: 2s  # 單次請求(含重試)的超時時間(2秒無響應則中斷)
    timeout: 5s  # 整個請求(所有重試累計)的全局超時時間(超過5秒直接失?。?/code>

這使我們能夠高效處理流量高峰,同時保持彈性。

責任編輯:武曉燕 來源: Springboot全家桶實戰案例源碼
相關推薦

2025-06-03 02:55:00

2022-08-17 09:54:57

Java性能優化

2024-08-13 08:00:00

2024-06-28 09:39:58

2023-06-09 09:54:36

攜程工具

2023-10-26 11:07:48

Golang開發

2011-02-22 10:23:34

2021-08-17 10:08:44

HTML網站網絡

2024-07-26 07:59:25

2023-10-08 09:52:55

2025-05-29 04:00:00

2024-03-12 10:02:31

Python內存編程

2025-01-07 08:21:03

2023-03-13 07:40:44

高并發golang

2024-06-24 10:31:46

2022-10-08 13:13:14

Python程序性能

2024-03-07 08:08:51

SQL優化數據

2023-10-04 17:41:39

編程習慣代碼

2025-01-26 10:49:52

2019-10-15 09:30:15

開源Spring BooJava
點贊
收藏

51CTO技術棧公眾號

99视频有精品| 欧美日韩国产高清| 欧美三级日韩在线| 欧美少妇在线观看| 香蕉视频免费在线看| 视频一区二区不卡| 久久电影一区二区| 免费在线观看成年人视频| 岛国一区二区| 偷拍日韩校园综合在线| 亚洲欧美久久234| 欧日韩在线视频| 日本成人在线电影网| 欧美日本精品在线| 变态另类ts人妖一区二区| 亚洲一区二区三区日本久久九| 精品久久久久久亚洲国产300| 视频一区视频二区视频三区高| av在线免费在线观看| 裸体素人女欧美日韩| 欧美精品生活片| 天天干天天舔天天操| 成人在线超碰| 欧美麻豆精品久久久久久| 缅甸午夜性猛交xxxx| 毛片免费不卡| 国产日韩欧美制服另类| 国产精品毛片va一区二区三区| 亚洲永久精品视频| 美女精品网站| 午夜精品久久久久久久久久久久| 三上悠亚作品在线观看| 国产亚洲一区二区三区啪 | 国产91精品看黄网站在线观看| 91av精品| 日韩一区二区精品视频| 国产jk精品白丝av在线观看| 国产精品久久久久久久久久白浆| 制服丝袜亚洲色图| 国产一二三区av| 另类专区亚洲| 日韩欧美成人精品| 日本网站免费在线观看| 国产美女情趣调教h一区二区| 亚洲免费观看高清完整版在线观看| 亚洲va韩国va欧美va精四季| 国产在线中文字幕| 久久婷婷综合激情| 精品亚洲第一| 深夜福利视频网站| av在线播放成人| 国产美女精品久久久| 97人妻精品一区二区三区视频| 日韩av不卡一区二区| 国产成人免费av电影| 天天综合网入口| 国产精品免费看| 日韩美女免费线视频| 日批视频免费在线观看| 久久精品国产清高在天天线| 欧美怡红院视频一区二区三区 | 在线观看国产精品网站| 日韩网址在线观看| 欧美1级2级| 色吊一区二区三区| 国产三级日本三级在线播放| 午夜无码国产理论在线| 欧美亚洲一区二区在线| 午夜免费福利在线| 欧美高清你懂的| 欧美一级一级性生活免费录像| 一卡二卡三卡四卡五卡| 大奶一区二区三区| 日韩成人在线视频网站| 97人妻天天摸天天爽天天| 蜜桃精品wwwmitaows| 亚洲香蕉在线观看| 777777国产7777777| 国语精品一区| 日韩美女激情视频| 国产精品久久久久久久一区二区| 国产激情视频一区二区三区欧美| 国产成人精品日本亚洲11| 无码国产精品一区二区免费16| 91丝袜美腿高跟国产极品老师 | 俄罗斯精品一区二区| 少妇人妻一区二区| 亚洲国产精品v| 大地资源网在线观看免费官网| 1024在线看片你懂得| 色一情一乱一乱一91av| 亚洲欧美偷拍另类| 久久精品66| 日韩在线不卡视频| 国产69精品久久久久久久久久| 人人精品人人爱| 成人一区二区三区四区| 国产免费永久在线观看| 亚洲欧美日韩国产综合| av免费中文字幕| 日韩欧美久久| 国产一区二区三区久久精品| 免费在线看黄网址| 日韩 欧美一区二区三区| 99国产在线视频| 国产日产精品久久久久久婷婷| 一区二区视频在线| 搡女人真爽免费午夜网站| 日韩一二三区| 在线国产精品播放| 国产又大又黑又粗免费视频| 久久机这里只有精品| 久久国产精品99久久久久久丝袜| jizz性欧美| 欧美日韩一区二区在线观看视频 | 风间由美性色一区二区三区四区| 国产亚洲欧美aaaa| 日本系列第一页| 国产精品1区2区| 中文精品一区二区三区| 婷婷六月国产精品久久不卡| 日韩女优电影在线观看| 女人18毛片毛片毛片毛片区二 | 国产日韩在线一区| 青青视频在线观| 亚洲国产精品尤物yw在线观看| 久国产精品视频| 亚洲性视频大全| 午夜精品三级视频福利| 亚洲精品97久久中文字幕| 中文字幕在线一区| 久久99999| 国产欧美一区| 欧美资源在线观看| 五月婷婷免费视频| 亚洲国产精品视频| jjzz黄色片| 欧美日本国产| 99re视频在线播放| 色呦呦久久久| 日韩欧美国产一区二区在线播放 | 色综合欧美在线| 尤物网站在线观看| 亚洲人成人一区二区三区| 99久久免费国| 麻豆av在线播放| 欧美mv日韩mv亚洲| 国产suv一区二区三区| 黄页视频在线91| 色乱码一区二区三区熟女| 日韩电影精品| 久久激情视频免费观看| 国产精品无码在线播放| 亚洲人成精品久久久久久| 99久久99精品| 欧美成人嫩草网站| 国产精品久久久久久免费观看| 高清电影在线观看免费| 精品国产免费人成电影在线观看四季| 欧美激情国产精品免费| 丁香网亚洲国际| 欧美精品自拍视频| 亚洲电影一级片| 国产精品久久久久aaaa九色| av在线女优影院| 91精品国产综合久久久久久久久久 | 欧美激情综合五月色丁香| 亚洲国产精品毛片av不卡在线| 精品国产乱码久久久久久果冻传媒| 国产精品7m视频| eeuss影院在线播放| 欧美日韩成人综合在线一区二区| 久久免费看少妇高潮v片特黄| 国产成人免费网站| 欧美激情 国产精品| 国内亚洲精品| 91九色国产社区在线观看| 黄网在线免费看| 亚洲欧美变态国产另类| 一区二区www| 亚洲一区二区三区四区五区中文| 国产熟女高潮一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕一区综合| 都市激情亚洲欧美| 国产精品免费福利| 日本成人不卡| 国产亚洲欧美另类中文| a在线观看免费| 欧美日韩在线另类| 女性裸体视频网站| 99久久精品国产毛片| 在线观看免费黄网站| 国产精品a级| 视频一区二区综合| 高清日韩中文字幕| 国产精品一区二区3区| 国内高清免费在线视频| 中文字幕日韩欧美在线| 亚洲成人77777| 欧亚一区二区三区| 黄色激情视频在线观看| 亚洲国产高清在线观看视频| 久久久无码人妻精品无码| 日本aⅴ亚洲精品中文乱码| 免费高清一区二区三区| 久久裸体网站| 欧美精品欧美精品系列c| 色播一区二区| 国产精品揄拍500视频| 伊人色综合一区二区三区影院视频| 久久九九免费视频| 国产区视频在线| 日韩电影网在线| 国产不卡精品视频| 欧美人体做爰大胆视频| 老熟妇仑乱一区二区av| 亚洲国产欧美在线| 超碰手机在线观看| 最新国产精品久久精品| 性少妇bbw张开| 99在线视频精品| japan高清日本乱xxxxx| 韩国v欧美v日本v亚洲v| 三级a在线观看| 免播放器亚洲| 男女视频网站在线观看| 国产一区二区三区自拍| 一级黄色免费在线观看| 欧美一区二区三区高清视频| 欧美动漫一区二区| 天天做夜夜做人人爱精品 | 欧美视频一二区| 91精选在线观看| 91好色先生tv| 欧美丰满高潮xxxx喷水动漫| 中文字幕网址在线| 日本电影亚洲天堂一区| 国产91精品看黄网站在线观看| 激情久久av一区av二区av三区| 精品肉丝脚一区二区三区| 玉米视频成人免费看| 放荡的美妇在线播放| 亚洲天堂久久久久久久| 黄色激情小视频| 亚洲欧美一区二区视频| 午夜激情福利电影| 亚洲人成在线观看一区二区| 免费三级在线观看| 亚洲激情校园春色| 久久久久无码精品国产| 亚洲国产精品自拍| 可以免费看的av毛片| 日本久久电影网| 日本黄色中文字幕| 欧美日韩一区三区四区| 96亚洲精品久久久蜜桃| 日韩一区二区电影| 日本免费网站在线观看| 日韩电影免费观看中文字幕| 韩国三级在线观看久| 色综合亚洲精品激情狠狠| 秋霞午夜理伦电影在线观看| 久久综合免费视频| 男女在线视频| 欧美在线激情网| 蜜桃成人精品| 成人精品视频在线| 成人三级av在线| 日韩精品久久一区| 亚洲一本二本| 免费观看美女裸体网站| 日韩精品成人一区二区在线| 91高清国产视频| 国产成人精品一区二区三区四区| 日本黄色免费观看| 国产精品午夜在线| 青娱乐国产盛宴| 色综合一个色综合亚洲| 国产又粗又猛视频免费| 精品国产一区久久| 户外极限露出调教在线视频| 久久久精品久久久久| jizzjizz中国精品麻豆| 国产成人免费av| 香蕉免费一区二区三区在线观看 | 国产精品嫩草影院久久久| 国产精品xnxxcom| 久久久久久欧美精品色一二三四| 欧美精品系列| 精品人妻大屁股白浆无码| 国产亚洲精品v| 天堂av8在线| 久久综合狠狠综合| 91视频免费在线看| 欧亚一区二区三区| 日本黄色一区二区三区| 俺也去精品视频在线观看| 毛片在线网站| 亚洲综合在线做性| 成人激情电影在线| 日韩av三级在线| 国产综合久久久久久久久久久久| 日本japanese极品少妇| 日韩美女视频19| 在线观看国产区| 欧美精品一区二区三| 日本欧美在线视频免费观看| 69视频在线免费观看| 嫩呦国产一区二区三区av| 日本在线观看一区| av成人黄色| 丰满少妇中文字幕| 中文字幕av不卡| 老熟妇仑乱一区二区av| 亚洲福利影片在线| 亚洲丝袜精品| 91麻豆国产语对白在线观看| 国产精品亚洲二区| 精品国产免费av| 高清shemale亚洲人妖| 中文字幕在线观看2018| 精品视频999| 国产高清免费av在线| 欧美亚洲日本黄色| 麻豆视频一区| 日韩av高清在线看片| 懂色av一区二区三区免费看| 午夜免费激情视频| 欧美一区二区三区免费在线看| 在线观看黄av| 国产精品尤物福利片在线观看| 欧洲激情综合| 日韩一级片播放| 久久久高清一区二区三区| 九九九在线观看| 亚洲欧美日韩中文视频| 自拍一区在线观看| 免费看成人片| 老司机精品导航| 亚洲精品国产一区黑色丝袜| 色噜噜久久综合| 男女视频在线观看免费| 热re91久久精品国99热蜜臀| 天天操综合520| 中文字幕无码不卡免费视频| 久久精品一区二区三区不卡牛牛| 成人免费a视频| 亚洲欧美中文另类| 欧美成a人片在线观看久| 欧洲在线视频一区| 免费观看久久久4p| 亚洲综合网在线| 欧美大肚乱孕交hd孕妇| 91福利在线免费| 免费看成人午夜电影| 日本不卡一区二区三区高清视频| youjizz亚洲女人| 91 com成人网| 天使と恶魔の榨精在线播放| 国产精品久久国产三级国电话系列| 精品99视频| 黑人巨大精品欧美| 在线观看日韩毛片| 国产理论在线观看| 99久久精品无码一区二区毛片| 亚洲欧洲另类| 日韩一级av毛片| 91精品国产色综合久久ai换脸| 伊人影院蕉久影院在线播放| 国产精品一区二区三区观看| 久久精品天堂| 亚洲AV成人无码精电影在线| 日韩精品专区在线| 亚洲电影观看| 一区二区三区久久网| 国产99久久久精品| 午夜精品一区二| 久久久精品在线| 日韩欧美四区| 少妇一级淫免费播放| 亚洲一线二线三线视频| 免费a在线观看| 国产自摸综合网| 国产精品日本| 91麻豆精品成人一区二区| 亚洲成人av在线播放| 色综合一本到久久亚洲91| 黄色一级大片免费| 久久久久久久av麻豆果冻| 99热这里只有精品在线观看| 欧美诱惑福利视频| 亚洲欧美综合久久久| 国产乱了高清露脸对白| 91精品欧美综合在线观看最新| 色综合桃花网| 粉嫩av一区二区三区天美传媒| 久久综合九色欧美综合狠狠| www久久久久久| 国产精品视频yy9099|