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(啟動時優化)
windows下為catalina.bat
添加參數:
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倍的提升,最大值和吞吐率出現了下降.個人猜測吞吐率的下降是因為在吞吐量一定的情況下,每秒并發數的提高拉低了該數值.并發最大值的降低,平均值的升高表明在此配置下系統的處理能力已經有了提高,并且穩定性也得到提升.