tomcat的運行模式有3種.修改他們的運行模式.3種模式的運行是否成功,能夠看他的啓動控制檯,或者啓動日誌.或者登陸他們的默認頁面http://localhost:8080/查看其中的服務器狀態。 html
1)bio java
默認的模式,性能很是低下,沒有通過任何優化處理和支持. linux
2)nio web
利用java的異步io護理技術,no blocking IO技術. shell
想運行在該模式下,直接修改server.xml裏的Connector節點,修改protocol爲 apache
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" URIEncoding="UTF-8" useBodyEncodingForURI="true" enableLookups="false" redirectPort="8443" />
啓動後,就能夠生效。 ubuntu
3)apr tomcat
安裝起來最困難,可是從操做系統級別來解決異步的IO問題,大幅度的提升性能. 服務器
必需要安裝apr和native,直接啓動就支持apr。下面的修改純屬多餘,僅供你們擴充知識,但仍然須要安裝apr和native 網絡
如nio修改模式,修改protocol爲org.apache.coyote.http11.Http11AprProtocol
有興趣的朋友能夠上去看一下,地址是:http://tomcat.apache.org/native-doc/,tomcat native在具體的運行平臺上,提供了一種優化技術,它自己是基於APR(Apache Portable Runtime)技術,在tomcat的document當中提到:
Tomcat can use the Apache Portable Runtime to provide superior scalability, performance, and better integration with native server technologies. The Apache Portable Runtime is a highly portable library that is at the heart of Apache HTTP Server 2.x. APR has many uses, including access to advanced IO functionality (such as sendfile, epoll and OpenSSL), OS level functionality (random number generation, system status, etc), and native process handling (shared memory, NT pipes and Unix sockets).
These features allows making Tomcat a general purpose webserver, will enable much better integration with other native web technologies, and overall make Java much more viable as a full fledged webserver platform rather than simply a backend focused technology.
也就是說,咱們應用了tomcat native技術以後,tomcat在跟操做系統級別的交互方面能夠作得更好,而且它更像apache同樣,能夠更好地做爲一臺web server。
APR是什麼做用呢?Tomcat 能夠用 Apache Portable Runtime 來提供更強性能,提高Web靜態頁面的處理能力。
因此在安裝tomcat-native以前要先安裝apr和apr-util這兩個包
要測APR給tomcat帶來的好處最好的方法是在慢速網絡上(模擬Internet),將Tomcat線程數開到300以上的水平,而後模擬一大堆併發請求。若是不配APR,基本上300個線程狠快就會用滿,之後的請求就只好等待。可是配上APR以後,併發的線程數量明顯降低,從原來的300可能會立刻降低到只有幾十,新的請求會毫無阻塞的進來。
APR對於Tomcat最大的做用就是socket調度。
你在局域網環境測,就算是400個併發,也是一瞬間就處理/傳輸完畢,可是在真實的Internet環境下,頁面處理時間只佔0.1%都不到,絕大部分時間都用來頁面傳輸。若是不用APR,一個線程同一時間只能處理一個用戶,勢必會形成阻塞。因此生產環境下用apr是很是必要的。
2、轉:http://hi.baidu.com/lucene1853/item/2fdadb17e4498a27f7625c78
apr配置安裝
今天在機子上配置了由Apache Software Foundation研發的開源產品Tomcat服務器,以用於jsp開發。
首先,在運行Tomcat以前,咱們要確保本機已經安裝了JDK(Java developing kit),這是運行Tomcat的首要環境。目前,sun公司已經將jdk升級爲JDK 6.0,咱們能夠直接到下面的網址上去下載http://java.sun.com/javase/downloads/index.jsp。下載完成後 按照嚮導完成安裝。而後以下配置環境變量:
JAVA_HOME: C:\Program Files\Java\jdk1.6.0(jdk的安裝路徑)
CLASSPATH: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
PATH: %JAVA_HOME%\bin;
接下來咱們就能夠到下面的網址去下載Tomcat的最新版本:http://tomcat.apache.org/download-60.cgi,我下載的是Tomcat 6.0.10解壓版本。下載完成後直接解壓縮就能夠用了。
Tomcat的目錄下面有一個bin目錄,咱們雙擊裏面的startup.bat就可使Tomcat運行。
還有一個問題,若是咱們注意的話,在運行Tomcat以前,窗口中會打印出以下信息:tomcat6.0The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path。若是你忽略它並不會影響你的正常使用。這是由於Tomcat 能夠用 Apache Portable Runtime 來提供更強性能,提高Web靜態頁面的處理能力,再也不須要專門的Web Server來處理靜態頁面了。
可是APR的支持須要安裝三個本地組件
APR support requires three main native components to be installed:
一、APR library
二、JNI wrappers for APR used by Tomcat (libtcnative)
三、OpenSSL libraries
咱們能夠點擊這裏http://tomcat.heanet.ie/native/下載編譯好的 tcnative-1.dll 文件,而後把它放到bin目錄中就OK了。
相關的文檔請參見:http://tomcat.apache.org/tomcat-6.0-doc/apr.html
若是沒有apr技術,啓動tomcat 時出現以下提示:
信 息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_06/jre/lib/i386/client:/usr/java/jdk1.6.0_06/jre/lib/i386:/usr/java/jdk1.6.0_06/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
若是安裝了apr技術,能夠看到如下結果:
信息: Loaded APR based Apache Tomcat Native library 1.1.14.2009-1-13 11:12:51 org.apache.catalina.core.AprLifecycleListener init信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 使用APR提升Tomcat性能Tomcat可使用APR來提供超強的可伸縮性和性能,更好地集成本地服務器技術.
APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x的核心。APR有不少用途,包括訪問高級IO功能(例如sendfile,epoll和OpenSSL),OS級別功能(隨機數生成,系統狀態等 等),本地進程管理(共享內存,NT管道和UNIX sockets)。這些功能可使Tomcat做爲一個一般的前臺WEB服務器,能更好地和其它本地web技術集成,整體上讓Java更有效率做爲一個高 性能web服務器平臺而不是簡單做爲後臺容器。
在產品環境中,特別是直接使用Tomcat作WEB服務器的時候,應該使用Tomcat Native來提升其性能
要 測APR給tomcat帶來的好處最好的方法是在慢速網絡上(模擬Internet),將Tomcat線程數開到300以上的水平,而後模擬一大堆併發請 求。若是不配APR,基本上300個線程狠快就會用滿,之後的請求就只好等待。可是配上APR以後,併發的線程數量明顯降低,從原來的300可能會立刻下 降到只有幾十,新的請求會毫無阻塞的進來。
在局域網環境測,就算是400個併發,也是一瞬間就處理/傳輸完畢,可是在真實的Internet環境 下,頁面處理時間只佔0.1%都不到,絕大部分時間都用來頁面傳輸。若是不用APR,一個線程同一時間只能處理一個用戶,勢必會形成阻塞。因此生產環境下 用apr是很是必要的。
(1)安裝APR
#apr-1.3.8.tar.gz
#tar zxvf apr-1.3.8.tar.gz
#cd apr-1.3.8
#./configure
#make
#make install
安裝在/usr/local/apr
#apr-util-1.3.9.tar.gz
#tar zxvf apr-util-1.3.9.tar.gz
#cd apr-util-1.3.9
#./configure --with-apr=/usr/local/apr
#make
#make install
安裝在/usr/local/apr/lib
安裝 tomcat-native
#cd /usr/local/tomcat5.5/bin
#tar zxvf tomcat-native.tar.gz
#cd tomcat-native-1.1.3/jni/native
#./configure --with-apr=/usr/local/apr
#make
#make install
說明:安裝tomcat-native時若是報錯 "Can’t locate a valid JDK location" 使用下面方式解決,
參照http://evgeny-goldin.com/blog/ubuntu-installing-apr-tomcat/
$ which java
/home/user/java/jdk/bin/java
$ echo $JAVA_HOME
/home/user/java/jdk
$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
But for some reason "tomcat-native-1.1.20-src/jni/native/configure" script didn’t see my "JAVA_HOME" variable no matter what and even installing "sun-java6-jdk" didn’t help much. After patching the "configure" script to dump locations it was looking for 「valid JDK」 I had:
configure: [/usr/local/1.6.1]
configure: [/usr/local/IBMJava2-1.6.0]
configure: [/usr/local/java1.6.0]
configure: [/usr/local/java-1.6.0]
configure: [/usr/local/jdk1.6.0]
configure: [/usr/local/jdk-1.6.0]
configure: [/usr/local/1.6.0]
configure: [/usr/local/IBMJava2-1.6]
configure: [/usr/local/java1.6]
configure: [/usr/local/java-1.6]
configure: [/usr/local/jdk1.6]
configure: [/usr/local/jdk-1.6]
..
Ok then, here you have it now:
sudo ln -s ~/java/jdk/ /usr/local/jdk-1.6
sudo ./configure --with-apr=/usr/local/apr
sudo make
sudo make install
(2)設置 Tomcat 整合 APR
有兩種方法:
(1)修改 tomcat 的啓動 shell ( catalina.sh ),在該文件中加入啓動參數: CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib" 。
(2)也能夠在環境變量中配置/etc/profile中加入 export CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"
source /etc/profile
(3)判斷安裝成功:
若是看到下面的啓動日誌,表示成功。
2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init
說明:
一、若是報下面異常,修改conf/server.xml下的 SSLEngine="on" 改成 SSLEngine="off"
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
SEVERE: Failed to initialize the SSLEngine.
org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform
我實際上是想解決這個問題,但太懶了。項目暫時不用ssl ,就不用管了,先留個坑吧。。
二、若是安裝上面三個都沒有問題。但報 APR/native library which is not available。查看一下【Tomcat 整合 APR】時是如何整何的,若是用的是第一種方法 ,tomcat啓動時,使用./catalina.sh start 啓動。建議使用第二種方式。若是第二種仍報錯。
修改成下面的信息
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib:/home/ngsteam/apache-tomcat-7.0.42/lib
3)
checking
for
JDK location (please wait)... checking Try to guess JDK location... configure: error: can't
locate
a valid JDK location
若是遇到上述錯誤使用下面命令建個軟連接便可,切記~
/java/jdk/ 是相對於當前目錄的。不要建錯了,若是建錯軟連接也會報一樣的錯,錯誤的軟連接顏色爲紅色,且有背景。或直接cd
/usr/local/jdk-1
.6 能夠進入,說明軟鏈建成功
sudo
ln
-s ~
/java/jdk/
/usr/local/jdk-1
.6 參照:http://evgeny-goldin.com/blog/ubuntu-installing-apr-tomcat/ 2. Installing Tomcat Native. wget http://off.co.il/apache//tomcat/tomcat-connectors/native/1.1.20/source/tomcat-native-1.1.20-src.tar.gz tar -xzf tomcat-native-1.1.20-src.tar.gz rm tomcat-native-1.1.20-src.tar.gz cd tomcat-native-1.1.20-src/jni/native sudo ./configure --with-apr=/usr/local/apr The result was checking build system type... x86_64-unknown-linux-gnu .. checking for APR... yes .. checking for JDK location (please wait)... checking Try to guess JDK location... configure: error: can't locate a valid JDK location Ouch! 「Can’t locate a valid JDK location」 ? On my machine? $ which java /home/user/java/jdk/bin/java $ echo $JAVA_HOME /home/user/java/jdk $ java -version java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode) But for some reason "tomcat-native-1.1.20-src/jni/native/configure" script didn’t see my "JAVA_HOME" variable no matter what and even installing "sun-java6-jdk" didn’t help much. After patching the "configure" script to dump locations it was looking for 「valid JDK」 I had: .. configure: [/usr/local/1.6.1] configure: [/usr/local/IBMJava2-1.6.0] configure: [/usr/local/java1.6.0] configure: [/usr/local/java-1.6.0] configure: [/usr/local/jdk1.6.0] configure: [/usr/local/jdk-1.6.0] configure: [/usr/local/1.6.0] configure: [/usr/local/IBMJava2-1.6] configure: [/usr/local/java1.6] configure: [/usr/local/java-1.6] configure: [/usr/local/jdk1.6] configure: [/usr/local/jdk-1.6] .. Ok then, here you have it now: sudo ln -s ~/java/jdk/ /usr/local/jdk-1.6 sudo ./configure --with-apr=/usr/local/apr sudo make sudo make install