引言
彼时 springboot 初兴,万象更新,号称“开箱即用”“约定优于配置”,一时间风靡四方。
开发者趋之若鹜,纷纷称快,仿佛自此架构之重可卸、配置之繁可省,一行 main()
即可气定神闲、纵横沙场。
然则时光久远,方知此言非虚,却也未尽其真。所谓默认,不过是你未曾开口,框架自作主张。表面无碍,实则步步杀机,线上事故十有八九,皆因“未曾配置”的“默认”。
回首往昔,实堪自嘲。曾自诩熟稔底层、精通原理,然于这些藏于阴影处的默认设定,竟茫然不觉。故障一起,仓皇失措,耗时良久,方才发现,不过是框架做了一个并不适合的决定。
是以今日提笔,将过往种种记录于此,只盼后来者少走弯路。
正文
tomcat连接池
springboot默认使用tomcat作为web容器,但默认的连接池配置在高并发场景下会成为瓶颈。
默认配置下,tomcat的最大连接数只有200,最大线程数也只有200。这意味着当并发请求超过200时,后续请求就会排队等待。在生产环境中,这个配置明显不够用。