精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美男人天堂| 人妻视频一区二区三区| 日韩在线观看| 欧美精品一区二区三区蜜桃| 最近免费中文字幕中文高清百度| 日本韩国在线视频爽| 国产91精品露脸国语对白| 欧美在线免费视频| 色婷婷在线视频观看| 欧美电影在线观看完整版| 欧美最新大片在线看| 大胆欧美熟妇xx| yourporn在线观看视频| 成人h版在线观看| 国产日本欧美视频| 亚洲男人的天堂在线视频| 国产精品久久久久久久久久10秀 | 亚洲欧美日韩精品久久久久| 久久99精品国产一区二区三区| 一区二区www| 麻豆91精品| 久久久久久久久国产精品| 你懂得视频在线观看| 国产精品sss在线观看av| 欧美日韩久久久一区| 男人添女人下部高潮视频在观看| 日韩久久久久久久久久久久| 91po在线观看91精品国产性色| 91日韩精品视频| 成人性生交大片免费网站| 亚洲精品高清视频在线观看| 日韩激情视频| 色视频免费在线观看| 国产成a人亚洲| 成人一区二区电影| 夜夜躁日日躁狠狠久久av| 亚洲深夜福利| 国内久久久精品| 麻豆成人在线视频| 亚洲午夜精品一区二区国产 | 成人综合网网址| 国产伦精品一区二区三区视频网站| 国产真实久久| 久久97精品久久久久久久不卡| 美国黄色特级片| 国产一区二区电影在线观看| 亚洲高清久久网| 极品白嫩的小少妇| 99ri日韩精品视频| 日韩精品一区二区三区视频在线观看| 亚洲视频一二三四| 99re在线视频| 国产亚洲美州欧州综合国 | 欧美日韩国产一区二区三区不卡| 欧美日韩成人高清| 污污的网站免费| 欧美美女被草| 在线亚洲一区观看| 欧洲黄色一级视频| 免费av在线播放| 亚洲嫩草精品久久| 亚洲激情免费视频| av在线免费观看网址| 樱桃视频在线观看一区| 免费看欧美一级片| 亚洲精品日产| 欧美在线999| 天天干天天色天天干| 北岛玲精品视频在线观看| 91精品国产综合久久久蜜臀图片| 国内av一区二区| 欧美欧美在线| 亚洲а∨天堂久久精品9966 | 成 人 免费 黄 色| 成人免费毛片嘿嘿连载视频| 精品一区二区三区免费毛片| 你懂得在线网址| 国产日韩影视精品| 自拍视频一区二区三区| 欧美性video| 欧美日韩色婷婷| 一区二区三区 日韩| 成人在线分类| 亚洲精品成人久久电影| 精品无人区无码乱码毛片国产 | 亚洲成人五区| 日韩精品极品视频| 亚洲第一视频区| 欧美日韩日本国产亚洲在线| 久久久久久久久久国产| 五月婷婷激情视频| 国产老妇另类xxxxx| 精品视频在线观看| 91吃瓜网在线观看| 亚洲影院理伦片| 色七七在线观看| 97se亚洲| 中文在线不卡视频| 国产精选第一页| 久久精品99国产精品日本| 国产精品免费一区二区三区在线观看 | japanese在线视频| 欧美a级在线观看| 在线不卡中文字幕播放| 欧美大片免费播放器| 大片网站久久| 51精品在线观看| 精品黑人一区二区三区国语馆| 久久综合九色欧美综合狠狠| 麻豆md0077饥渴少妇| 三上悠亚激情av一区二区三区| 91麻豆精品国产| 9.1片黄在线观看| 国产欧美二区| 国产传媒一区| 黄a在线观看| 欧美自拍丝袜亚洲| 亚洲一区二区三区无码久久| 欧美精品入口| 91久久精品一区| 成年人视频网站在线| 日韩欧美在线免费观看| 动漫av在线免费观看| 视频在线不卡免费观看| 日韩免费在线播放| 手机看片一区二区三区| 一区二区三区四区中文字幕| 超碰在线人人爱| 天堂在线精品| 久久免费观看视频| 亚洲av综合色区无码一区爱av | 成人综合激情网| 日日噜噜夜夜狠狠久久丁香五月| 成人亚洲视频| 伊人久久久久久久久久| 免费看一级视频| 26uuu欧美| 欧美黑人经典片免费观看| 51社区在线成人免费视频| 精品国产拍在线观看| 中文字幕一区二区三区四区视频| 久久久www免费人成精品| 欧美亚洲国产成人| 女人抽搐喷水高潮国产精品| 欧美精品福利视频| 日本黄色免费视频| 黄网站色欧美视频| 国产精品第七页| 亚洲欧美日本视频在线观看| 黑人另类av| 性欧美18xxxhd| 国产亚洲欧美日韩美女| 黄色污污视频软件| 国产精品久久影院| 亚洲黄色片免费| 午夜精品久久99蜜桃的功能介绍| 亚洲最大av网| 99热99re6国产在线播放| 亚洲成人国产精品| 亚洲欧美综合另类| 欧美激情一区二区三区蜜桃视频| 宅男噜噜噜66国产免费观看| 欧美电影三区| 99re国产| 精品国产免费人成网站| 国产亚洲成av人片在线观看桃| 少妇高潮av久久久久久| 中文字幕一区二区在线播放| 91日韩精品视频| 一区在线视频观看| 欧美日韩精品一区| 欧美亚洲二区| 久久久久久久久久久91| 四虎在线视频| 欧美婷婷六月丁香综合色| 麻豆精品国产免费| 成人午夜免费电影| 妞干网在线免费视频| 欧美日中文字幕| 亚洲xxx大片| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 亚洲人成网站影音先锋播放| 亚洲成a人无码| 老司机午夜精品视频| 一本—道久久a久久精品蜜桃| 永久免费精品视频| 国产精品 欧美在线| 26uuu亚洲电影在线观看| 亚洲精品狠狠操| 一区二区三区精彩视频| 香蕉久久一区二区不卡无毒影院| 欧美丰满老妇熟乱xxxxyyy| 国产精品影视在线| 99福利在线观看| 正在播放日韩欧美一页| 久久久久久久久久久久久久久久av | 91久久久久久久久久久久久| 国产在线观看www| 久久精品99久久久香蕉| 色吊丝在线永久观看最新版本| 777色狠狠一区二区三区| 丁香六月婷婷综合| 亚洲精品福利视频网站| 精品国产aaa| 99久久精品国产一区二区三区| 亚洲 欧美 另类人妖| 中文日韩欧美| 日日噜噜夜夜狠狠久久丁香五月| 欧美激情在线精品一区二区三区| 国产精品久久99久久| 九色porny丨国产首页在线| 在线视频亚洲欧美| 欧美美女色图| 欧美美女bb生活片| 懂色av蜜臀av粉嫩av分享吧最新章节| 亚洲欧美区自拍先锋| 我想看黄色大片| 99视频精品免费视频| 亚洲综合123| 精品一二线国产| 午夜免费福利在线| 久热国产精品| 日韩欧美精品在线观看视频| 一区免费在线| 男同互操gay射视频在线看| 日韩理论电影大全| 日韩欧美精品一区二区三区经典| 天堂在线精品| 久久99国产精品| 欧美人妖在线观看| 99久久无色码| 亚洲天堂av资源在线观看| 91在线高清免费观看| 视频在线日韩| 国产精品盗摄久久久| 在线男人天堂| 欧美亚洲成人精品| 欧美激情20| 欧美在线亚洲在线| 不卡一二三区| 国产成人+综合亚洲+天堂| 深夜成人在线| 热久久免费国产视频| 欧美成人精品一区二区男人小说| 欧美性做爰毛片| 人人鲁人人莫人人爱精品| 欧美又大粗又爽又黄大片视频| 男女羞羞在线观看| 日本中文字幕不卡免费| 无人区在线高清完整免费版 一区二| 久久久久久久久久久网站| 综合图区亚洲| 欧美俄罗斯乱妇| 亚洲www色| 久久天堂av综合合色| 最新真实国产在线视频| 中文字幕视频一区二区在线有码 | 国产乡下妇女三片| 欧美日韩小视频| 国产视频一区二区三| 欧美日本乱大交xxxxx| 91九色蝌蚪91por成人| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区精品伦理...| 国产97色在线| 国产另类xxxxhd高清| 成人午夜高潮视频| 亚洲一区二区电影| 国产精品二区在线观看| 色爱综合av| 亚洲国产午夜伦理片大全在线观看网站 | 久久久久久国产精品免费播放| 亚洲国产裸拍裸体视频在线观看乱了| 午夜国产福利视频| 亚洲一区二区三区免费视频| 国产成人免费观看视频 | 美女主播精品视频一二三四| 鲁丝一区鲁丝二区鲁丝三区| 成人激情在线| 日本a级片在线播放| 亚洲一区黄色| 免费av网址在线| 国产综合久久久久久鬼色 | 国产欧美视频一区二区| www.99热| 亚洲国产精品影院| 天天射天天干天天| 日韩欧美一二区| 户外极限露出调教在线视频| 久久久www成人免费精品| av免费不卡国产观看| 国产精品自产拍在线观| 波多野结衣欧美| 亚洲福利av在线| 亚洲精品美女91| jizz欧美激情18| 成人晚上爱看视频| 精品无码国产污污污免费网站| 久久久三级国产网站| 黄色一级片一级片| 黑人巨大精品欧美一区二区免费| 在线播放精品视频| 亚洲精品按摩视频| aa在线视频| 国产精品视频大全| 卡通动漫国产精品| 一本—道久久a久久精品蜜桃| 久久最新视频| 久久人人爽人人人人片| 中文字幕日韩欧美一区二区三区| 一级片中文字幕| 精品久久久久香蕉网| 欧洲日本在线| 国产成人精品免高潮费视频| 国产精品白浆| 国产a级黄色大片| 激情丁香综合五月| www.日本高清视频| 欧美性猛交xxxxx免费看| 性生活视频软件| 不卡av电影院| 电影91久久久| 在线视频不卡一区二区| 日欧美一区二区| 色婷婷av777| 亚洲永久精品大片| 国产叼嘿视频在线观看| 日韩中文字幕av| 成年网站在线视频网站| 91精品视频免费| 91精品国产成人观看| 亚欧美在线观看| 国产在线视频一区二区| 国产欧美小视频| 欧美日精品一区视频| 国产色a在线| 国产国语刺激对白av不卡| 综合激情久久| av在线免费观看国产| 丁香啪啪综合成人亚洲小说| 69xxx免费| 9191国产精品| 成人影院在线看| 日本aⅴ大伊香蕉精品视频| 天堂资源在线亚洲| 妺妺窝人体色www在线小说| 国产精品一区三区| 欧美xxxx精品| 欧美日韩一级片在线观看| 在线看的av网站| 国产自摸综合网| 图片小说视频色综合| www.污网站| 亚洲精品视频在线观看免费| 国内精品久久久久久久久久| 久久91精品国产| 偷拍自拍亚洲| 国产91沈先生在线播放| 成人国产精品免费观看动漫| 国产又爽又黄的视频| 精品久久久久久久久久久久久久久久久| av大大超碰在线| 国产精品av一区| 国产精品综合| 亚洲第一综合网| 91精品欧美福利在线观看| a天堂在线资源| 亚洲a级在线播放观看| 欧美视频亚洲视频| 亚洲国产精品自拍视频| 色噜噜狠狠成人中文综合| 国产高清免费在线播放| 国产一区二区色| 伊人成人在线| 在线观看日本黄色| 欧美视频一区二区三区| 宅男在线观看免费高清网站| 精品一区二区日本| 美女精品自拍一二三四| 欧美爱爱小视频| 精品中文视频在线| 色诱色偷偷久久综合| www.夜夜爱| 国产欧美中文在线| va视频在线观看| 日本国产一区二区三区| 亚洲综合自拍| 欧美图片第一页| 日韩一区二区免费视频| 成人短视频app| 日本精品福利视频| 久久精品在线观看| 一区二区国产欧美| 国产91精品高潮白浆喷水| 国产精品97| 亚洲区免费视频| 精品少妇一区二区三区日产乱码| 成人欧美一区二区三区的电影| 91免费视频黄| 久久婷婷国产综合国色天香|