Tomcat是什麼
開源的 Java Web 應用伺服器,實現了 Java EE(Java Platform Enterprise Edition)的部 分技術規範,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司為企業級應用推出的標準平臺,定義了一系列用於企業級開發的技術規範,除了上述的之外,還有 EJB、Java Mail、JPA、JTA、JMS 等,而這些都依賴具體容器的實現
上圖對比了 Java EE 容器的實現情況,Tomcat 和 Jetty 都只提供了 Java Web 容器必需的 Servlet 和 JSP 規範,開發者要想實現其他的功能,需要自己依賴其他開源實現。
Glassfish 是由 sun 公司推出,Java EE 最新規範出來之後,首先會在 Glassfish 上進行實 現,所以是研究 Java EE 最新技術的首選。
最常見的情況是使用 Tomcat 作為 Java Web 伺服器,使用 Spring 提供的開箱即用的強大 的功能,並依賴其他開源庫來完成負責的業務功能實現
常用調優方式1 : 修改…/bin/catalina.sh(啟動時優化)
新增引數:
export JAVA_OPTS=”-server”
作用:tomcat預設以java –client方式執行, 新增”server”引數將tomcat切換為生產模式,使得tomcat能支援更高的併發數和吞吐量.
測試結果:
修改前:
修改後:
總結:
最大併發數和吞吐量有明顯的提升.
常用調優方式2:
新增引數:
export JAVA_OPTS=”-server -Xms256M -Xmx256M”
作用:Xms參數列示初始堆的大小,也是堆大小的最小值,預設值是總共的實體記憶體1/64, 且小於1G(下面是-Xmx同), Xmx參數列示堆的最大值.在本機中這個引數的值大約為128m.這裡將其擴大一倍.正常情況下應當將這個引數的數值設定為相同.還有另外一些引數,如Xss,表示每個執行緒的棧記憶體,預設為1M,但經過查閱資料表明這些引數一般情況下不需要改動.即增加堆記憶體是提高tomcat記憶體效能最好最安全的做法
測試結果
總結:
對比上個引數,可以明顯看到併發請求的平均值,中值都有2-3倍的提升,最大值和吞吐率出現了下降.個人猜測吞吐率的下降是因為在吞吐量一定的情況下,每秒併發數的提高拉低了該數值.併發最大值的降低,平均值的升高表明在此配置下系統的處理能力已經有了提高,並且穩定性也得到提升.