第1步 – 提升JVM棧內存Increase JVM heap memoryhtml
你使用過tomcat的話,簡單的說就是「內存溢出」. 一般狀況下,這種問題出如今實際的生產環境中.產生這種問題的緣由是tomcat使用較少的內存給進程,經過配置TOmcat的配置文件(Windows 下的catalina.bat或Linux下的catalina.sh)能夠解決這種問題.這種解決方法是經過增長JVM的棧內存實現的.也就是說,JVM一般不去調用垃圾回收器,因此服務器能夠更多關注處理web請求,並要求儘快完成。要更改文件(catalina.sh) 位於"\tomcat server folder\bin\catalina.sh",下面,給出這個文件的配置信息,java
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XXermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"-Xms – 指定初始化時化的棧內存
第2步 – 解決JRE內存泄露程序員
性能表現不佳的另外一個主要緣由是內存泄漏,正如我以前說過:始終使用最新的tomcat服務器以得到更好的性能和可伸縮性。如今,這句話變成真的。若是咱們使用最新的tomcat版本6.0.26及以上就能夠解決這個錯誤,由於它包含了一個監聽器來處理JRE和PermGen的內存泄漏。使用的監聽器是,web
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />你能夠在server.xml文件中找到這個監聽器的配置,server.xml位置在「tomcat project folder/conf/server.xml」。接下來,咱們將看看如何調整鏈接屬性「maxThreads」。
<Connector port="8080" address="localhost" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8181" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />在上述配置中,maxThreads值設定爲「250」,這指定能夠由服務器處理的併發請求的最大數量。若是沒有指定,這個屬性的默認值爲「200」。任何多出的併發請求將收到「拒絕鏈接」的錯誤提示,直到另外一個處理請求進程被釋放。錯誤看起來以下,
org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) are currently busy, waiting. Increase maxThreads (250) or check the servlet status若是應用提示上述錯誤,務必檢查上述錯誤是不是因爲單個請求花費太長時間形成的,這個問題的緣由是這樣的,有時候若是數據庫鏈接不釋放的話,進程將不會處理其它請求。
第4步- 壓縮數據庫
Tomcat有一個經過在server.xml配置文件中設置壓縮的選項。壓縮能夠在connector像以下設置中完成,apache
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8181" compression="500" compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />在前面的配置中,當文件的大小大於等於500bytes時纔會壓縮。若是當文件達到了大小可是卻沒有被壓縮,那麼設置屬性compression="on"。不然Tomcat默認設置是「off」。接下來咱們將看看如何調優數據庫。
第5步- 數據庫性能調優編程
Tomcat性能在等待數據庫查詢被執行期間會下降。現在大多數應用程序都是使用可能包含「命名查詢」的關係型數據庫。若是是那樣的話,Tomcat會在啓動時默認加載命名查詢,這個可能會提高性能。另外一件重要事是確保全部數據庫鏈接正確地關閉。給數據庫鏈接池設置正確值也是十分重要的。我所說的值是指Resource要素的最大空閒數(maxIdle),最大鏈接數(maxActive),最大創建鏈接等待時間(maxWait)屬性的值。由於配置依賴與應用要求,我也不能在本文指定正確的值。你能夠經過調用數據庫性能測試來找到正確的值。瀏覽器
第6步 – Tomcat原生庫緩存
Tomcat的原生庫基於Apache可移植運行時(Apache Portable Runtime簡稱APR),給程序員提供了超強的擴展性和性能,在產品運做中幫助融合原生的服務器技術以展示最佳的性能。想知道安裝說明的朋友請參考Tomcat Native Library – (APR) Installation。tomcat
第7步 – 其餘選項
這些選項是:
就這麼多啦。在這篇文章裏,我教給了你們一些提升Tomcat服務器性能的方法。若是你以爲這篇文章有用,或者你對提升Tomcat服務器性能有別的見解,請不要忘記留下寶貴的評論。祝你今天編程愉快!