淺談springboot內置tomcat和外部獨立部署tomcat的區別
前兩天,我去面了個試,面試官問了我個問題,獨立部署的tomcat跟springboot內置的tomcat有什么區別,為什么存在要禁掉springboot的tomcat然后將項目部署到獨立的tomcat當中?
我就想,不都一個樣?獨立部署的tomcat可以配置優化?禁AJP,開多線程,開nio?而且springboot內置的tomcat多方便,部署上服務器寫個java腳本運行即可。現在考慮下有什么條件能優于內置tomcat的。
1.tomcat的優化配置多線程?內置的也可以配置多線程
server:tomcat:uri-encoding: UTF-8max-threads: 1000max-connections: 20000
2.tomcat禁用AJP?我啟動了個springboot項目,發現并沒有開啟AJP,同時用的是nio模式
3.tomcat修改運行模式nio2?或者apr?我發現在網上查資料,可以找到springboot配置運行模式的方法,但是可以說的一個點是tomcat修改配置會比springboot方便一些,畢竟springboot要寫類,寫配置再打包,再啟動。
4.jvm調優?其實兩個都差不多,tomcat通關配置catalina.sh,springboot通過運行腳本寫上就行了
tomcat:CATALINA_OPTS='$CATALINA_OPTS -server -Xms128m -Xmx1024m -XX:+UseG1GC'
springboot:java -jar -Xms128m -Xmx1024m -XX:+UseG1GC java-1.0.0.jar
5.考慮jar包和war包占用內存問題?好像沒誰說誰誰占用內存高
6.獨立部署tomcat可以部署多個項目然后映射在同一個ip,例如我們把后臺系統和app系統分成了2個包部署?我們有nginx可以實現。但是這個時候要考慮是多個項目部署在一個tomcat好還是一個包一個tomcat,其實這個得看業務或者說個人選擇吧,多個項目部署在同一個tomcat啟動方便,不占用端口。一個tomcat部署一個包具有獨立性,互不影響,不會要掛一起掛。
7.部署更方便?tomcat上我們丟war包上去后,他會自動地去解包啟動,可以不需要重啟tomcat或者可以只替換某個文件部署,springboot的話需要重新打包再重啟。
個人總結:
一般清空下,到底是使用內置tomcat還是外置的,并沒有一個肯定的回答,都得看公司或者個人的需求,看好哪口,熟悉那種,根據需求來,并沒有誰的性能更好點,而是誰更符合我,另外如果有人覺得我說的有什么問題,或者補充的可以評論給我建議,謝謝。
補充知識:SpringBoot項目部署到外部Tomcat,入口類不加載的問題解決過程
某一天,突然發現正在開發的Web項目無法訪問了。看log,發現入口類不加載了。而Tomcat是正常啟動的。
有這么一段提示:
org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.……
隨之網上找了各種辦法,逐一嘗試均告失敗……
折騰了一整天,整個人快要崩潰了。
隨即通過git查看近期所有代碼修改的差異,終于發現是前一天腦袋一熱,pom中多加了這么一段依賴:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <scope>runtime</scope></dependency>
刪除之,再次啟動tomcat,淚奔啊。終于OK了!
以上這篇淺談springboot內置tomcat和外部獨立部署tomcat的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
