引言
彼時 SpringBoot 初興,萬象更新,號稱“開箱即用”“約定優于配置”,一時間風靡四方。
開發者趨之若鶩,紛紛稱快,仿佛自此架構之重可卸、配置之繁可省,一行 main()
即可氣定神閑、縱橫沙場。
然則時光久遠,方知此言非虛,卻也未盡其真。所謂默認,不過是你未曾開口,框架自作主張。表面無礙,實則步步殺機,線上事故十有八九,皆因“未曾配置”的“默認”。
回首往昔,實堪自嘲。曾自詡熟稔底層、精通原理,然于這些藏于陰影處的默認設定,竟茫然不覺。故障一起,倉皇失措,耗時良久,方才發現,不過是框架做了一個并不適合的決定。
是以今日提筆,將過往種種記錄于此,只盼后來者少走彎路。
正文
Tomcat連接池
SpringBoot默認使用Tomcat作為Web容器,但默認的連接池配置在高并發場景下會成為瓶頸。
默認配置下,Tomcat的最大連接數只有200,最大線程數也只有200。這意味著當并發請求超過200時,后續請求就會排隊等待。在生產環境中,這個配置明顯不夠用。