四、單機運行環境搭建之 --CentOS-6.5優化Tomcat8

轉載自 http://www.cnblogs.com/littlehb/archive/2013/04/02/2994785.htmlhtml

接上文。 java

你們都據說了在Apache Tomcat6 中支持了Java語言的特性 NIO( New I/O),無論你對NIO的技術是否熟悉,但你確定能想象的到NIO是一個好東西。的確,使用NIO在服務器端會有更好的性能,增強服務器端對併發處理的性能。  請注意:很抱歉,在tomcat6在默認的配置選項中是沒有把NIO功能打開。因此不少正在使用Tomcat6的朋友們本覺得能快活的使用上NIO。apache

cd /usr/local/tomcat1/conf
vi server.xml

1、設置Tomcat鏈接器池。 vim

在配置文件中添加了以下配置:centos

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />
修改前:
image
修改後:
image

2、Linux下修改JVM內存大小 tomcat

要添加在tomcat 的bin 下catalina.sh 裏,位置cygwin=false前 。注意引號要帶上,紅色的爲新添加的.服務器

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m"

cygwin=false

3、查看當前系統open files的默認值: 併發

ulimit -a less

沒改過是1024 高併發

文件系統最大可打開文件數:cat /proc/sys/fs/file-max  

個人機器是396399

修改文件系統最大打開文件數:echo 396399 >/proc/sys/fs/file-max

此值只能往小的設置不能超過限制值。

一、     在vi /etc/security/limits.conf文件中設置最大打開文件數 添加:

*      soft    nofile         65535        

*      hard    nofile        65535

最後用重啓ulimit -a再次查看,open files的值,若是改過來,則生效。

4、  安裝Tomcat的Apr,提高性能

發現 Tomcat 能夠用 Apache Portable Runtime 來提供更強性能,提高Web靜態頁面的處理能力,再也不須要專門的Web Server來處理靜態頁面了。apr 與 tomcat-native 提供更好的伸縮性、性能和集成到本地服務器技術。

若是沒有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 library

OpenSSL libraries

openssl 能夠用

yum install -y openssl-devel

apr仍是下載*.gz來安裝。

(1)安裝apr 

mkdir  /root/software
cd /root/software
wget http://mirror.bit.edu.cn/apache/apr/apr-1.5.0.tar.gz
tar zxvf apr-1.4.6.tar.gz  
cd apr-1.4.6 
./configure --prefix=/usr/local/apr 
make 
make install

安裝apr的時候出現

./configure --prefix=/usr/local/apr

rm: cannot remove `libtoolT': No such file or directory

解決辦法:

vim configure

在30126行 #    $RM "$cfgfile" 前面加#註釋掉:

image

在從新./configure

(2)安裝apr-iconv

cd /root/software
wget http://mirror.bit.edu.cn/apache/apr/apr-iconv-1.2.1.tar.gz
tar -zxvf apr-iconv-1.2.1.tar.gz 
cd apr-iconv-1.2.1 
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr  
make 
make install

(3)安裝apr-util

cd /root/software
wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.3.tar.gz
tar zxvf apr-util-1.5.3.tar.gz
cd apr-util-1.5.3 
./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr  --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv  
make 
make install

PS:我有經歷兩次不一樣裝apr,第一次是個人centos沒有升級,一個升級後,升級前會有一些雜七雜八的error說不成,通常都是少包什麼的,你給它yum update就好了,建議升級後再裝,會比較正常一點點~~

(4)安裝tomcat-native

//tomcat-native-1.1.29-src.tar.gz  這個我裝的tomcat裏邊就本身帶了,在bin目錄下,若是大家沒有找到,去網上下一個就好了。。具體哪下我也不知道⊙﹏⊙b汗,找apache的官網吧

cd /usr/local/tomcat1/bin    
tar zxvf tomcat-native.tar.gz  
cd tomcat-native-1.1.29-src/jni/native    
./configure --with-apr=/usr/local/apr
make   
make install

(5)設置 apr 的環境變量

cd /usr/local/tomcat1/bin

vi catalina.sh

在文件的#!/bin/sh下添加以下內容:

#!/bin/sh

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_LIBRARY_PATH

這樣的話,咱們只是把這個TOMCAT的APR添加上了,不破壞其它TOMCAT的配置信息。

啓動 tomcat 後, 看日誌:

bin/startup.sh

head logs/catalina.out

能夠看到如下結果:

好了,能夠運行了,但沒有測試其性能提升多少。

在高併發下會讓性能有明顯提高。安裝完成後重啓便可生效。如使用默認protocal就是apr,但最好把將protocol修改爲org.apache.coyote.http11.Http11AprProtocol,會更加明確。

cd /usr/local/tomcat1/conf
vi server.xml

替換Connector內容以下:

<Connector port="8080"
        protocol="org.apache.coyote.http11.Http11AprProtocol"
        executor="tomcatThreadPool"
        compression="on"
        compressionMinSize="2048"
        maxThreads="30000"
        minSpareThreads="512"
        maxSpareThreads="2048"
        enableLookups="false"
        redirectPort="8443"
        acceptCount="35000"
        debug="0"
        connectionTimeout="40000"
        disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

下面咱們開始進行測試兩種協議的壓力狀況:

centos安裝ab

yum install httpd-tools

準備以後咱們就能夠測試了

ab -kc 1000 -n 10000 http://localhost:8080/

這個指令會使用1000個併發,進行鏈接10000次。結果以下:

NIO最快的一次:

APR的最快一次:

差距是50%左右,強烈推薦使用APR協議!!!不要使用NIO協議+APR庫支持的行爲!!!!!!!!

若是安裝不上APR或者真的沒有辦法啓用APR,那麼用以下的備用方案:

<Connector port="8080"
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        executor="tomcatThreadPool"
        compression="on"
        compressionMinSize="2048"
        maxThreads="30000"
        minSpareThreads="512"
        maxSpareThreads="2048"
        enableLookups="false"
        redirectPort="8443"
        acceptCount="35000"
        debug="0"
        connectionTimeout="40000"
        disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
 
 
按照做者所說apr安裝以前 我就安裝了ad測試工具測試的connection Times max最小值爲85,配置完apr後測試最小值爲82。沒有什麼差距。
相關文章
相關標籤/搜索