貨源介紹
咨詢扣扣:叁柒伍零伍玖二 TEL:13425412696
福州,臺州,泉州,杭州州,高防服務器,大帶寬資源
淺談Tomcat服務器優化方法
對于JavaWeb開發人員而言,Tomcat已成為默認的web服務器,但是在生產環境下使用Tomcat部署應用,我們如果采用Tomcat默認的配置,尤其是內存和線程的配置,其配置都很低,容易成為性能瓶頸,所以我們需要對Tomcat服務器進行優化,提升其運行性能,下面我們一起來看看Tomcat如何優化?
一、Tomcat內存優化,啟動時告訴JVM需要多大內存(調優內存是最直接的方式)
Windows 下的 catalina.bat
Linux 下的 catalina.sh
在該文件中配置jvm的內存空間,如: JAVA_OPTS='-Xms256m -Xmx512m'
-Xms JVM初始化堆的大小
-Xmx JVM堆的最大值,實際參數大小根據服務器配置或者項目具體設置;
二、Tomcat 線程優化 在server.xml中配
三、Tomcat IO 優化
1:同步阻塞IO(JAVA BIO) 同步并阻塞,服務器實現模式為一個連接一個線程(one connection one thread 想想都覺得恐怖,線程可是非常寶貴的資源),當然可以通過線程池機制改善.
2:JAVA NIO 又分為同步非阻塞IO,異步阻塞IO與BIO最大的區別one request one thread.可以復用同一個線程處理多個connection(多路復用).
3:異步非阻塞IO(Java NIO2又叫AIO) 主要與NIO的區別主要是操作系統的底層區別,可以做個比喻:比作快遞,NIO就是網購后要自己到官網查下快遞是否已經到了(可能是多次),然后自己去取快遞;AIO就是快遞員送貨上門了(不用關注快遞進度)。
BIO方式適用于連接數目比較小且固定的架構,這種方式對服務器資源要求比較高,并發局限于應用中,JDK1.4以前的唯一選擇,但程序直觀簡單易理解.
NIO方式適用于連接數目多且連接比較短(輕操作)的架構,比如聊天服務器,并發局限于應用中,編程比較復雜,JDK1.4開始支持.
AIO方式使用于連接數目多且連接比較長(重操作)的架構,比如相冊服務器,充分調用OS參與并發操作,編程比較復雜,JDK7開始支持.
四、大殺器APR
APR是從操作系統級別來解決異步的IO問題,大幅度的提高性能. (http://apr.apache.org/)。
APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x 的核心,能更好地和其它本地web技術集成,總體上讓Java更有效率作為一個高性能web服務器平臺而不是簡單作為后臺容器;
在產品環境中,特別是直接使用Tomcat做WEB服務器的時候,應該使用Tomcat Native來提高其性能,如果不配APR,基本上300個線程狠快就會用滿,以后的請求就只好等待.但是配上APR之后,并發的線程數量明顯下降,從原來的300可能會馬上下降到只有幾十,新的請求會毫無阻塞的進來;
在局域網環境測,就算是400個并發,也是一瞬間就處理/傳輸完畢,但是在真實的Internet環境下,頁面處理時間只占0.1%都不到,絕大部分時間都用來頁面傳輸,如果不用APR,一個線程同一時間只能處理一個用戶,勢必會造成阻塞,所以生產環境下用apr是非常必要的.
安裝Apache Tomcat Native Library,直接啟動就支持apr(http://tomcat.apache.org/native-doc/)它本身是基于APR的,排除代碼問題Tomcat優化到這個層次,可以應對大部分性能需求;
最后,優化的前提條件是良好的代碼質量和設計。標題:高防服務器網站搭建專用防護CC攻擊有效處理高并發
咨詢扣扣:叁柒伍零伍玖二 TEL:13425412696
福州,臺州,泉州,杭州州,高防服務器,大帶寬資源
淺談Tomcat服務器優化方法
對于JavaWeb開發人員而言,Tomcat已成為默認的web服務器,但是在生產環境下使用Tomcat部署應用,我們如果采用Tomcat默認的配置,尤其是內存和線程的配置,其配置都很低,容易成為性能瓶頸,所以我們需要對Tomcat服務器進行優化,提升其運行性能,下面我們一起來看看Tomcat如何優化?
一、Tomcat內存優化,啟動時告訴JVM需要多大內存(調優內存是最直接的方式)
Windows 下的 catalina.bat
Linux 下的 catalina.sh
在該文件中配置jvm的內存空間,如: JAVA_OPTS='-Xms256m -Xmx512m'
-Xms JVM初始化堆的大小
-Xmx JVM堆的最大值,實際參數大小根據服務器配置或者項目具體設置;
二、Tomcat 線程優化 在server.xml中配
三、Tomcat IO 優化
1:同步阻塞IO(JAVA BIO) 同步并阻塞,服務器實現模式為一個連接一個線程(one connection one thread 想想都覺得恐怖,線程可是非常寶貴的資源),當然可以通過線程池機制改善.
2:JAVA NIO 又分為同步非阻塞IO,異步阻塞IO與BIO最大的區別one request one thread.可以復用同一個線程處理多個connection(多路復用).
3:異步非阻塞IO(Java NIO2又叫AIO) 主要與NIO的區別主要是操作系統的底層區別,可以做個比喻:比作快遞,NIO就是網購后要自己到官網查下快遞是否已經到了(可能是多次),然后自己去取快遞;AIO就是快遞員送貨上門了(不用關注快遞進度)。
BIO方式適用于連接數目比較小且固定的架構,這種方式對服務器資源要求比較高,并發局限于應用中,JDK1.4以前的唯一選擇,但程序直觀簡單易理解.
NIO方式適用于連接數目多且連接比較短(輕操作)的架構,比如聊天服務器,并發局限于應用中,編程比較復雜,JDK1.4開始支持.
AIO方式使用于連接數目多且連接比較長(重操作)的架構,比如相冊服務器,充分調用OS參與并發操作,編程比較復雜,JDK7開始支持.
四、大殺器APR
APR是從操作系統級別來解決異步的IO問題,大幅度的提高性能. (http://apr.apache.org/)。
APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x 的核心,能更好地和其它本地web技術集成,總體上讓Java更有效率作為一個高性能web服務器平臺而不是簡單作為后臺容器;
在產品環境中,特別是直接使用Tomcat做WEB服務器的時候,應該使用Tomcat Native來提高其性能,如果不配APR,基本上300個線程狠快就會用滿,以后的請求就只好等待.但是配上APR之后,并發的線程數量明顯下降,從原來的300可能會馬上下降到只有幾十,新的請求會毫無阻塞的進來;
在局域網環境測,就算是400個并發,也是一瞬間就處理/傳輸完畢,但是在真實的Internet環境下,頁面處理時間只占0.1%都不到,絕大部分時間都用來頁面傳輸,如果不用APR,一個線程同一時間只能處理一個用戶,勢必會造成阻塞,所以生產環境下用apr是非常必要的.
安裝Apache Tomcat Native Library,直接啟動就支持apr(http://tomcat.apache.org/native-doc/)它本身是基于APR的,排除代碼問題Tomcat優化到這個層次,可以應對大部分性能需求;
最后,優化的前提條件是良好的代碼質量和設計。