天天看點

薪技術|0到1學會性能測試第54課-Tomcat之APR配置

作者:川石課堂軟體測試

前面的推文我們掌握了Tomcat伺服器的3種監控技術知識。今天給大家分享Tomcat調優技術。後續文章都會系統分享幹貨,帶大家從0到1學會性能測試,另外還有教程等同步資料,文末加小編VX:flyhappy111領取即可。

薪技術|0到1學會性能測試第54課-Tomcat之APR配置

01APR配置

Tomcat可以使用APR(Apahce Portable Runtime)來提供更卓越的可伸縮性和性能,并且更好地內建本地伺服器技術,APR是一個高可移植庫,它以Apache HTTP Server 2.x為核心。APR有很多用途,包括通路進階IO功能(如sendfile、epoll和OpenSSL),OS級别功能(随機數生成、系統狀态等等),本地程序管理(共享記憶體、NT管道和UNIX sockets),這些功能可以使Tomcat作為一個通常的前台WEB伺服器,更好地和其它本地web技術內建,總體上讓Java更有效率作為一個高性能web伺服器平台而不是簡單作為背景容器。

APR安裝需要三個主要元件:

1)APR庫;

2)基于APR的JNI(Native Interface)安裝包;

3)OpenSSL庫;

在Windows下安裝:

在Windows二進制包中提供了tcnative包,它是一個靜态包,包括OpenSSL和APR兩個元件,針對自身的平台可以下載下傳适合自己的平台,從安全性角度考慮,建議使用單獨的OpenSSL和APR包。

在Linux下安裝:

在很多Linux發行版中其實已經封裝了APR和OpenSSL安裝包,JNI安裝包則依懶于APR、OpenSSL和JDK。

安裝包的二進制源檔案,打包在tomcat-native.tar.gz包中,對該檔案進行解壓和提取,提取後對檔案進行配置、編輯和安裝即可。即./configure、make和make install。

安裝好之後,在server.xml檔案中可以看到關于APR配置内容,如下是一個執行個體:

<?xml version='1.0' encoding='utf-8'?>
<Server port="-1" shutdown="SHUTDOWN">


  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />


  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>


  <Service name="Catalina">


    <Executor name="tomcatThreadPool" namePrefix="tomcat-http--" maxThreads="300" minSpareThreads="50"/>


    <Connector
               executor="tomcatThreadPool"
               port="8080"
               protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443"
               acceptCount="100"
               maxKeepAliveRequests="15"/>


    <Connector
               executor="tomcatThreadPool"
               port="8443"
               protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443"
               acceptCount="100"
               maxKeepAliveRequests="15"
               SSLCertificateFile="${catalina.base}/conf/tcserver.crt"
               SSLCertificateKeyFile="${catalina.base}/conf/tcserver.key"
   SSLPassword="changeme"
               SSLEnabled="true"
               scheme="https"
               secure="true"/>


    <Engine name="Catalina" defaultHost="localhost">


      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>


      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true" deployOnStartup="true" deployXML="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>           

APR生命周期的監控配置如下:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />           

className表示監控的類名,SSLEngine屬性用于配置是否啟動SSL引擎,如果設定為“on”則啟動SSL,如果設定為“off”則表示不啟動SSL引擎,預設值為“on”,這隻是初始化SSL引擎,如果需要在連接配接器中使用SSL引擎,那麼需要配置“SSLEnabled”屬性,将“SSLEnabled”屬性設定為“True”表示在該連接配接器中啟動SSL引擎,将“SSLEnabled”屬性設定為“False”表示在該連接配接器中不啟動SSL引擎。

APR中配置連接配接器通常有三種:HTTP、HTTPS和AJP三種。

HTTP連接配接器配置:

當APR啟動時,HTTP連接配接器會發送檔案來處理大型靜态檔案,增加伺服器的可伸縮性,HTTP連接配接器的常用配置選項,見表10-2

表10-2 HTTP連接配接器配置項

薪技術|0到1學會性能測試第54課-Tomcat之APR配置

HTTPS連接配接器配置:

當APR啟動後,HTTPS連接配接器将使用socket用于輪回,以增加伺服器的可伸縮性,也可以使用OpenSSL,但是否比JSSE更有優勢,取決于處理器,與HTTP連接配接器不同的是,HTTPS連接配接器不能發送檔案對靜态檔案進行處理。HTTPS APR與HTTP APR有很多相同的基本屬性,但OpenSSL是特定的,連接配接器的常用配置選項,見表10-3。

表10-3 HTTPS連接配接器配置項

薪技術|0到1學會性能測試第54課-Tomcat之APR配置

一個關于SSL連接配接器配置的執行個體:

<Connector port="443" maxHttpHeaderSize="8192"
               maxThreads="150"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               SSLEnabled="true" 
               SSLCertificateFile="${catalina.base}/conf/localhost.crt"
               SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />           

AJP連接配接器配置:

當APR啟動後,AJP連接配接器将使用socket用于輪回,以增加伺服器的可伸縮性,與HTTP連接配接器不同的是,HTTPS連接配接器不能發送檔案對靜态檔案進行處理。

AJP連接配接器的常用配置選項,見表10-4

薪技術|0到1學會性能測試第54課-Tomcat之APR配置

下期分享JVM調優技術,敬請關注!

繼續閱讀