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

SpringBoot 的這些默認配置不改,100%會踩坑!

開發 前端
Spring Boot 的“約定優于配置”確實省心,但省的是開發者的心,不是系統的責任。每一項默認配置背后,其實都藏著設計者的假設和權衡,而這些假設,在我們的業務場景中也許未必成立。

彼時 SpringBoot 初興,萬象更新,號稱“開箱即用”“約定優于配置”,一時間風靡四方。

開發者趨之若鶩,紛紛稱快,仿佛自此架構之重可卸、配置之繁可省,一行 main() 即可氣定神閑、縱橫沙場。

然則時光久遠,方知此言非虛,卻也未盡其真。所謂默認,不過是你未曾開口,框架自作主張。表面無礙,實則步步殺機,線上事故十有八九,皆因“未曾配置”的“默認”。

回首往昔,實堪自嘲。曾自詡熟稔底層、精通原理,然于這些藏于陰影處的默認設定,竟茫然不覺。故障一起,倉皇失措,耗時良久,方才發現,不過是框架做了一個并不適合的決定。

是以今日提筆,將過往種種記錄于此,只盼后來者少走彎路。

Tomcat連接池

SpringBoot默認使用Tomcat作為Web容器,但默認的連接池配置在高并發場景下會成為瓶頸。

默認配置下,Tomcat的最大連接數只有200,最大線程數也只有200。這意味著當并發請求超過200時,后續請求就會排隊等待。在生產環境中,這個配置明顯不夠用。

server:
  tomcat:
    max-connections: 10000  # 最大連接數
    threads:
      max: 800              # 最大工作線程數
      min-spare: 100        # 最小空閑線程數
    accept-count: 100       # 等待隊列長度
    connection-timeout: 20000

更坑的是,SpringBoot的默認超時時間是無限長。這會導致連接一直占用,直到客戶端主動斷開。

在網絡不穩定的環境下,大量連接會一直掛著不釋放,最終耗盡服務器資源。

數據庫連接池

SpringBoot默認使用HikariCP作為數據庫連接池,但默認的連接池配置在生產環境下會成為瓶頸。默認最大連接數只有10個,對于稍微復雜一點的應用來說根本不夠用。

spring:
  datasource:
    hikari:
      maximum-pool-size: 50
      minimum-idle: 10
      connection-timeout: 30000
      idle-timeout: 600000
      max-lifetime: 1800000
      leak-detection-threshold: 60000

特別要注意leak-detection-threshold這個配置。默認情況下這個檢測是關閉的,如果代碼中存在連接泄漏問題,根本發現不了。

開啟后,HikariCP會監控連接的使用時間,超過閾值就會打印警告日志。

JPA懶加載

SpringBoot集成JPA時,默認開啟了懶加載。這個設計初衷是好的,但在實際使用中經常會導致N+1查詢問題。

@Entity
public class User {
    @Id
    private Long id;
    
    @OneToMany(fetch = FetchType.LAZY)  // 默認就是LAZY
    private List<Order> orders;
}

當查詢用戶列表時,每訪問一次orders屬性,就會觸發一次數據庫查詢。

如果有100個用戶,就會執行101次SQL。

這種情況下,要么使用@EntityGraph指定加載策略,要么在Repository中使用JOIN FETCH。

@Query("SELECT u FROM User u LEFT JOIN FETCH u.orders")
List<User> findAllWithOrders();

Jackson時區序列化

SpringBoot默認使用Jackson處理JSON序列化,但時區處理經常出問題。

默認情況下,Jackson會使用系統時區,這在分布式部署時會導致不一致的問題。

spring:
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
    serialization:
      write-dates-as-timestamps: false

更要命的是,如果你的應用部署在不同時區的服務器上,同樣的時間可能會被序列化成不同的值。

這個問題在國際化應用中特別突出。

日志配置

SpringBoot默認使用Logback,但默認配置下沒有對日志文件進行滾動和清理。

長時間運行的應用會產生巨大的日志文件,最終占滿磁盤空間。

logging:
  file:
    name: app.log
  logback:
    rollingpolicy:
      max-file-size: 100MB
      max-history: 30
      total-size-cap: 3GB

另外,默認的日志級別是INFO,在生產環境中會產生大量不必要的日志。

合理設置日志級別可以顯著提升性能。

緩存配置

SpringBoot的@Cacheable注解默認使用ConcurrentHashMap作為緩存實現,但這個實現沒有過期機制,也沒有大小限制。在高并發場景下,緩存會無限增長,最終導致內存溢出。

spring:
  cache:
    type: caffeine
    caffeine:
      spec: maximumSize=10000,expireAfterWrite=600s

可以考慮使用Caffeine替代默認實現,可以提供更好的性能和內存管理能力。

監控端點

監控端點

SpringBoot Actuator默認暴露了很多監控端點,包括健康檢查、配置信息、環境變量等。

這些信息在開發環境中很有用,但在生產環境中可能泄漏敏感信息。

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics
  endpoint:
    health:
      show-details: when-authorized

只暴露必要的端點,并且配置適當的安全策略,避免信息泄漏。

文件上傳大小限制

SpringBoot默認的文件上傳限制非常小,單個文件只能上傳1MB,整個請求大小限制10MB。

在實際業務中,這個限制經常不夠用,用戶上傳稍大一點的文件就會報錯。

這個屬于是比較常見的問題,因為開發環境測試時通常用小文件,一切正常。等到用戶上傳幾MB的PDF文檔或者高清圖片時,系統就開始報 MaxUploadSizeExceededException 異常。

這個異常往往還發生在文件傳輸完成之后,用戶等了半天上傳完畢,結果被告知文件過大,體驗極差。

spring:
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
      file-size-threshold: 2KB
      location: /tmp
      resolve-lazily: false

file-size-threshold 這個參數也很重要,它決定了多大的文件會直接寫入內存。如果設置過大,大量并發上傳會占用過多內存;設置過小,小文件也要寫磁盤,影響性能。一般設置為幾KB比較合適。

異步線程池配置

使用@Async注解時,SpringBoot默認使用SimpleAsyncTaskExecutor,這個執行器每次都會創建新線程,沒有線程池復用機制。高并發情況下會創建大量線程,最終導致系統資源耗盡。

這個問題在開發階段很難發現,因為異步任務通常不多。但在生產環境,如果有大量異步任務執行,比如發送短信、推送、記錄日志等,系統會不斷創建新線程。每個線程默認占用1MB的??臻g,創建幾千個線程就是幾GB內存。

更嚴重的是線程切換的開銷,CPU大部分時間都在做上下文切換,真正的業務邏輯反而執行很慢。

spring:
  task:
    execution:
      pool:
        core-size:8
        max-size:16
        queue-capacity:100
        keep-alive:60s
      thread-name-prefix:async-task-
    scheduling:
      pool:
        size:4
      thread-name-prefix: scheduling-

線程池大小的設置也有講究。

如果是CPU密集型任務,線程數設置為CPU核心數就夠了;如果是IO密集型任務,可以設置為CPU核心數的2-3倍。

queue-capacity設置了任務隊列長度,當線程池滿了之后,新任務會放到隊列里等待執行。

靜態資源緩存策略

SpringBoot默認不為靜態資源設置HTTP緩存頭,這意味著瀏覽器每次都會重新請求CSS、JS、圖片等靜態文件,嚴重影響頁面加載性能。

用戶每次訪問頁面,瀏覽器都要重新下載所有靜態資源,即使這些文件根本沒有變化。對于資源較多的單頁應用來說,這個問題特別明顯。用戶看到的就是頁面加載慢,特別是網絡條件不好的時候,體驗很差。

spring:
  web:
    resources:
      cache:
        cachecontrol:
          max-age:365d
          cache-public:true
      chain:
        strategy:
          content:
            enabled:true
            paths:/**
        cache:true
      static-locations: classpath:/static/

開啟內容版本化策略后,SpringBoot會根據文件內容生成MD5哈希值作為版本號,文件名變成style-abc123.css這樣的格式。當文件內容發生變化時,哈希值也會變化,瀏覽器會認為這是新文件重新下載;如果文件沒變化,瀏覽器就直接使用緩存,有效提升頁面加載速度。

數據庫事務超時

@Transactional注解默認沒有設置超時時間,長時間運行的事務會一直持有數據庫鎖,影響其他操作的執行。特別是在批量數據處理時,很容易出現鎖表問題。

這個問題在并發量不高的時候不明顯,但隨著業務增長,長事務的危害就暴露出來了。

比如一個數據導入任務需要處理幾萬條記錄,如果放在一個事務里,可能要運行幾分鐘甚至更長時間。在這期間,相關的表都被鎖住,其他用戶的操作只能等待,系統響應變得很慢。

@Transactional(timeout = 30, rollbackFor = Exception.class)
publicvoidbatchProcess(List<Data> dataList) {
    // 分批處理,避免長事務
    intbatchSize=100;
    for (inti=0; i < dataList.size(); i += batchSize) {
        List<Data> batch = dataList.subList(i, 
            Math.min(i + batchSize, dataList.size()));
        processBatch(batch);
    }
}

對于大批量數據處理,建議分成多個小事務,每個事務處理少量數據。這樣即使某個小事務失敗,也不會影響整體進度,而且可以及時釋放數據庫鎖,提高系統并發性能。

同時再加上rollbackFor = Exception.class確保所有異常都會觸發回滾,避免數據不一致。

寫在最后

Spring Boot 的“約定優于配置”確實省心,但省的是開發者的心,不是系統的責任。每一項默認配置背后,其實都藏著設計者的假設和權衡,而這些假設,在我們的業務場景中也許未必成立。

這些坑我幾乎都踩過,有些甚至反復踩了好幾次。

愿你讀到這里,能少走幾步彎路,可不能拿生產事故去交學費。

提前優化配置,是對系統負責,也是對自己負責。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2021-12-28 08:17:41

循環 forgo

2021-10-15 06:49:37

MySQL

2018-09-11 09:14:52

面試公司缺點

2023-03-13 13:36:00

Go擴容切片

2015-03-24 16:29:55

默認線程池java

2021-09-25 13:05:10

MYSQL開發數據庫

2018-01-10 06:17:24

2021-04-14 17:34:18

線程安全

2018-08-01 14:45:16

PHP編程語言

2021-06-09 08:21:14

Webpack環境變量前端

2025-04-15 02:00:00

API版本項目

2022-07-15 08:20:54

Java基礎知識

2023-02-20 08:11:04

2024-04-10 08:39:56

BigDecimal浮點數二進制

2023-01-18 23:20:25

編程開發

2020-09-15 08:46:26

Kubernetes探針服務端

2022-07-26 09:34:23

監控系統

2024-04-01 08:05:27

Go開發Java

2017-07-17 15:46:20

Oracle并行機制

2024-04-09 09:29:22

NginxOSS資源
點贊
收藏

51CTO技術棧公眾號

日韩一级视频| 国产偷拍一区二区| 日本一区二区高清不卡| 日韩精品视频中文字幕| 三级久久三级久久| 最近日韩中文字幕中文| 麻豆精品国产传媒| 成人国产二区| 亚洲欧美日韩国产手机在线| 精品久久久久久综合日本| 91丨九色丨海角社区| 欧美激情第8页| 亚洲欧美日韩一区二区在线 | 国产欧美日韩中文| 久久久香蕉视频| 成人中文视频| 日韩电影中文字幕在线| 午夜精品久久久久久久99热影院| xxx.xxx欧美| 中文字幕精品一区二区精品绿巨人| 91在线短视频| 中文字幕 日韩有码| 亚洲黄色大片| 久久成人一区二区| 国产精品久久免费观看| 日韩精品亚洲aⅴ在线影院| 在线不卡免费av| 热久久精品国产| heyzo在线播放| 亚洲欧美国产77777| 欧美日韩精品一区| 四虎永久在线精品免费网址| 极品少妇xxxx精品少妇| 国产97在线亚洲| 日韩精品一区二区在线播放| 欧美日韩国产欧| www.久久久久| 成人黄色短视频| 精品99久久| 精品香蕉一区二区三区| 久久久精品人妻一区二区三区| 成人在线免费av| 色婷婷综合久久久久中文| 成人午夜视频在线观看免费| 四季久久免费一区二区三区四区| 国产精品区一区二区三区| 欧美日韩高清在线一区| 视频一区二区在线播放| 99精品国产99久久久久久白柏| 成人免费视频视频在| 国产三级伦理片| 精品一区二区在线免费观看| 国产噜噜噜噜噜久久久久久久久| 久久久久久av无码免费看大片 | 日本999视频| 超碰国产一区| 亚洲一区二区三区在线| 亚洲一区二区三区午夜| 久热av在线| 成人av在线播放网址| 91久久精品国产| 日本精品入口免费视频| 日本麻豆一区二区三区视频| 国产精品爱久久久久久久| 国产成人精品777777| 国产日韩专区| 国产不卡在线观看| www.av88| 精品一区二区三区欧美| 92国产精品久久久久首页| 99热这里只有精品在线| 成人性生交大片免费| 国内一区二区在线视频观看| 天天操天天干天天操| 久久亚洲欧美国产精品乐播| 日本一区免费看| 91成人高清| 亚洲私人影院在线观看| 99热这里只有精品免费| heyzo在线| 麻豆国产一区二区| 久久婷婷成人综合色| 狠狠色综合网站久久久久久久| 日韩精品在线免费视频| 久热国产精品| 亚洲一区久久久| 日韩有码第一页| 久久久久久99精品| 亚洲AV无码成人精品一区| 在线免费观看的av| 欧美天堂在线观看| 伊人网在线综合| 国产成人一二片| 一区二区日韩精品| 校园春色 亚洲| 亚欧成人精品| 亚洲自拍另类欧美丝袜| 十九岁完整版在线观看好看云免费| 欧美国产日韩一二三区| 人妻无码一区二区三区四区| 韩国主播福利视频一区二区三区| 欧美日韩一级二级| xxxx视频在线观看| 国内精品久久久久久99蜜桃| 久久偷看各类女兵18女厕嘘嘘| 91午夜视频在线观看| 狠狠色综合日日| 麻豆亚洲一区| 污视频在线看网站| 色欧美乱欧美15图片| 深夜福利网站在线观看| 欧美日韩激情| 91精品国产乱码久久久久久蜜臀| 一级特黄色大片| 91香蕉视频在线| 免费的av在线| 国产精品成人国产| 亚洲激情视频网| 夫妻性生活毛片| 日韩国产高清影视| 国产一区二区三区色淫影院| 超碰在线免费播放| 欧美撒尿777hd撒尿| 久久精品女同亚洲女同13| 香蕉av一区二区| 国产精品视频不卡| 五月天激情开心网| 亚洲综合激情另类小说区| 亚洲综合av在线播放| 国产成人精品三级高清久久91| 国语自产在线不卡| 精品人妻一区二区三区四区不卡| 国产精品你懂的| 99精品视频在线看| 欧美日韩另类图片| 欧美高清一级大片| 国产福利资源在线| 综合激情成人伊人| 久久黄色片网站| 欧美电影一区| 国产日韩欧美在线| 午夜在线小视频| 欧美综合视频在线观看| 成人免费av片| 国产亚洲在线观看| 久久精品久久精品国产大片| 女海盗2成人h版中文字幕| 精品国产乱码久久久久久夜甘婷婷 | 国产成人在线免费观看| 中国成人在线视频| 欧洲午夜精品| 久久久精品网站| 国产美女自慰在线观看| 综合自拍亚洲综合图不卡区| av在线免费看片| 一区二区三区四区日韩| 91麻豆蜜桃| 国产探花在线观看| 亚洲国产精品小视频| 国产精品500部| 久久久国际精品| 国产高潮免费视频| 久久精品国产68国产精品亚洲| 国产免费亚洲高清| 国产黄大片在线观看画质优化| 日韩欧美亚洲另类制服综合在线 | 欧美一区亚洲| 99免费在线观看视频| 黄页网站在线观看免费| 亚洲精品美女久久| 久久久久久亚洲av无码专区| 国产欧美日韩视频在线观看| 五月天婷婷激情视频| 久久美女视频| 不卡视频一区| 国产不卡网站| 中文字幕亚洲欧美一区二区三区| 国产日韩免费视频| 亚洲成av人片在www色猫咪| 在线免费观看成年人视频| 日韩av一区二区三区| 一区二区精品免费视频| 日韩视频免费播放| 欧美特大特白屁股xxxx| 日韩专区在线观看| 狠狠人妻久久久久久综合麻豆| 疯狂欧美牲乱大交777| www..com.cn蕾丝视频在线观看免费版| 欧美a级理论片| www.黄色网址.com| 色先锋久久影院av| 91亚洲国产成人精品性色| 岛国av在线播放| 中文字幕欧美精品在线| 免费的黄色av| 欧美日韩一卡二卡三卡| 久久免费视频6| 国产午夜精品一区二区| 中文字幕久久久久久久| 日本不卡一二三区黄网| 福利视频免费在线观看| 成人激情免费视频| 国产自产在线视频一区| 国产精品亲子伦av一区二区三区| 欧美激情在线观看视频| av资源在线观看免费高清| 精品久久久久香蕉网| 亚洲 小说区 图片区| 亚洲第一久久影院| 小早川怜子一区二区的演员表| av网站一区二区三区| 久久成年人网站| 亚洲免费在线| 国产乱子伦精品无码专区| 欧美日韩色图| 欧美日韩国产不卡在线看| 91国内精品白嫩初高生| 91精品国产综合久久香蕉最新版 | 日韩中文字幕亚洲一区二区va在线 | 欧美日韩精品一区二区| 天天操天天爽天天干| 亚洲蜜臀av乱码久久精品| 99精品欧美一区二区| 99视频一区二区| 在线观看一区二区三区四区| 精品亚洲成a人| 日韩福利视频在线| 一区二区日韩免费看| 蜜臀精品一区二区| 女主播福利一区| 一区二区免费电影| 欧美日韩精品一区二区视频| 欧美日韩国产精品一区二区| 欧美一级色片| 国产尤物99| jizz性欧美23| 成人91视频| 亚洲va欧美va人人爽成人影院| 国产在线观看一区二区三区| 国产精品videossex撒尿| 国产激情综合五月久久| 日韩成人动漫| 国产91在线高潮白浆在线观看| 伊人网在线播放| 欧美一级片久久久久久久| 九色porny丨入口在线| 91黑丝在线观看| 瑟瑟视频在线看| 国产91精品青草社区| 超碰资源在线| 欧美一区二区三区免费观看| 无遮挡在线观看| 日本最新高清不卡中文字幕| 欧美成人资源| 国产精品男女猛烈高潮激情| 欧美日韩亚洲国产| 国产日韩av在线播放| 亚洲国产天堂| 91蜜桃网站免费观看| 一区二区三区国产好| 精品日本一区二区三区| 亚洲精品国产setv| 日本在线免费观看一区| 99久久夜色精品国产亚洲1000部| 日韩视频在线免费播放| 欧美精品大片| 成人av一级片| 日本欧美加勒比视频| aaa一级黄色片| 成人爽a毛片一区二区免费| 国产精品第七页| 国产欧美精品一区二区色综合| 91大神福利视频| 一区二区三区在线播| 日韩av免费网址| 91福利视频网站| 国产乱人乱偷精品视频a人人澡| 日韩免费高清av| 涩涩视频在线观看免费| 丝袜美腿精品国产二区| 欧美v亚洲v| 国产v综合ⅴ日韩v欧美大片| 亚洲伊人伊成久久人综合网| 国产精品xxxx| 国产a久久精品一区二区三区| 一区二区三区四区视频在线 | 日韩专区av| 18一19gay欧美视频网站| av高清一区| 5g国产欧美日韩视频| 日韩av影院| 午夜午夜精品一区二区三区文| 888久久久| 37pao成人国产永久免费视频| 精品亚洲国内自在自线福利| 人体私拍套图hdxxxx| 中文av一区特黄| 日韩大片免费在线观看| 欧美精品v国产精品v日韩精品 | 日韩一级片免费视频| 久久久水蜜桃av免费网站| 日韩a一级欧美一级| xnxx国产精品| 强乱中文字幕av一区乱码| 91成人在线观看喷潮| www.av黄色| 亚洲一级黄色片| 538在线视频| 91亚洲精品在线| 日韩系列欧美系列| 成熟了的熟妇毛茸茸| 国产精品亚洲а∨天堂免在线| 青青草福利视频| 亚洲午夜成aⅴ人片| 国产麻豆免费视频| 夜夜嗨av色综合久久久综合网| а√天堂中文资源在线bt| 成人久久久久久久| 欧美丝袜一区| 116极品美女午夜一级| 懂色av中文一区二区三区| 日本一级片免费| 欧美三级欧美一级| 亚洲色图欧美视频| 欧美精品videofree1080p| 国产麻豆一区二区三区| 亚洲欧美日韩精品久久久| 久久激情婷婷| 538国产视频| 精品久久久免费| 欧美一级淫片免费视频魅影视频| 久久久国产视频| 亚洲热av色在线播放| 亚洲成人自拍| 蜜桃精品视频在线| 永久免费毛片在线观看| 在线观看免费一区| 国产黄色在线| 国产精品偷伦视频免费观看国产| 国产成人3p视频免费观看| 亚洲熟妇av一区二区三区| 99久久精品免费看国产| 国产乱码久久久久久| 精品福利在线导航| 暖暖在线中文免费日本| 99超碰麻豆| 韩国在线一区| 久久久久久久人妻无码中文字幕爆| 亚洲最新视频在线播放| www.午夜激情| 久久久久久噜噜噜久久久精品| 91蝌蚪精品视频| 日本xxxxxxxxxx75| 99久久综合99久久综合网站| 日本道在线观看| 亚洲欧洲国产伦综合| 日本精品在线一区| 日韩福利二区| 紧缚奴在线一区二区三区| 成人免费毛片东京热| 欧美tk—视频vk| 国产自产自拍视频在线观看| 欧美第一黄网| 免费成人在线观看视频| www深夜成人a√在线| 日韩欧美一级片| 国产ktv在线视频| 区一区二区三区中文字幕| 蜜桃av噜噜一区| 欧美国产日韩综合| 日韩精品中文字幕在线播放| 欧美xnxx| 国产精品国产三级国产专区51| 99久久精品情趣| 一本一道精品欧美中文字幕| 欧美精品情趣视频| 亚洲动漫精品| 手机免费av片| 亚洲成人免费在线| 国产理论电影在线观看| 91最新在线免费观看| 国产精品嫩草99av在线| 亚洲不卡的av| 欧美精品一区二区三区很污很色的| 中文在线免费视频| 精品国产三级a∨在线| 99久久99精品久久久久久 | 久久久男人天堂| 最新精品视频| 99久久伊人网影院| 国产农村妇女毛片精品久久| 2019中文字幕在线观看| 999久久久精品国产| 亚洲少妇18p| 8v天堂国产在线一区二区| 麻豆蜜桃在线观看| 日本xxx免费| 国产性做久久久久久| 不卡视频在线播放| 国产精品视频播放|