JAVA-TomcatはAPRモードに対応しています。

6381 ワード

前言
前に試験環境起動Tomcatで次のような警告エラーがありました。大体私のAPRライブラリバージョンは1.1.24ですが、Tomcat 8.5に必要なバージョンは1.2.6です。アップグレードする必要があります。ついでにAPRを調べてみました。今はみんなでAPRモードをサポートするように構築します。
30-Sep-2017 11:20:30.659 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.24 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.2.6
30-Sep-2017 11:20:31.601 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.24 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.2.6
30-Sep-2017 11:20:31.603 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8888"]
30-Sep-2017 11:20:31.722 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
30-Sep-2017 11:20:31.726 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version 1.1.24 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.2.6
30-Sep-2017 11:20:31.727 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8011"]
1.APRとは何ですか
APR:Apache Portable Run-time libries、Appheはライブラリを移植することができます。初期のApacheバージョンでは、アプリケーション自体が様々な具体的なオペレーティングシステムプラットフォームの詳細を処理し、異なるプラットフォームに対して異なる処理関数を呼び出すことができる必要がある。Apacheのさらなる開発に伴い、Apache組織はこれらの共通の関数を独立させて新しいプロジェクトに発展させることを決定しました。このように、APRの開発はAppacheから独立し、AppacheはAPRを使うだけです。
Tomcat Native:このプロジェクトはTomcatにApacheのapprパッケージを使ってファイルとネットワークIOの操作を処理させて、性能を向上させます。
2.Tomcat Connectorがサポートする運転パターン
  • BIO
  • スレッドは要求を処理します。短所:同時量が多い時、スレッド数が多くて、資源を浪費します。Tomcat以下、Tomcat7システムでは、このような方式がデフォルトで使用されている。
  • NIO
  • Linuxの非同期IO処理を用いて、大量の要求を少量のスレッドで処理することができる。Javaは、Tomcat8システムにおいて、このような方式をデフォルトで使用する。Linuxは、Tomcat7の構成を変更して起動しなければならない。
     
    
  • APR
  • すなわち、Apache Portable Runtimeは、OSレベルからIOブロッキング問題を解決します。ConnectorまたはTomcat7は、Tomcat8またはそれ以上のシステムにおいて、デフォルトの使用を開始する。LinuxはWin7およびaprをインストールした場合、nativeが直接起動するとTomcatをサポートします。
    現在大部分の人が使用する場合は、デフォルトの解凍aprがそのまま使用されていますので、ほとんどはTomcatモードを使用しています。次に、みんなを連れてAPRモードをサポートさせます。
    APRを構築する
    1.ダウンロードして解凍する
    ダウンロード関連ツールNIOTomcat
    cd /usr/local/
    wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz
    tar -zxvf apr-1.6.3.tar.gz
    
    cd /usr/local/
    wget http://mirrors.shuosc.org/apache//apr/apr-util-1.6.1.tar.gz
    tar -zxvf apr-util-1.6.1.tar.gz
    
    gcc依存パッケージがインストールされていない場合は、対応する依存パッケージをインストールします。
    yum -y install autoconf
    yum -y install libtool
    yum -y install expat-devel
    yum -y install openssl openssl-devel
    
    ユムを使ってopensslをインストールする時にopensslが1.0.1であることを発見しましたが、tomcat-v 8.5は1.0.2以上のバージョンが必要です。マニュアルでのみインストールできます。あなた達がインストールしたバージョンが1.0.2以上なら、次のステップを実行する必要はありません。
    ダウンロードして解凍します。
    cd /usr/local/
    wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
    tar -zxvf openssl-1.0.2l.tar.gz
    
    インストールと配置
    cd /usr/local/openssl-1.0.2l/
    ./config --prefix=/usr/local/openssl //      /usr/local/openssl  
    make && make install
    mv /usr/bin/openssl /usr/bin/openssl.OFF    
    mv /usr/include/openssl /usr/include/openssl.OFF    
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl    
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl    
    echo "/usr/local/openssl/lib">>/etc/ld.so.conf    
    ldconfig -v    
    openssl version -a  
    
    2.コンパイルしてインストールする
    cd /usr/local/apr-1.6.3/
    ./configure --prefix=/usr/local/apr //      /usr/local/apr  
    make && make install
    
    cd /usr/local/apr-util-1.6.1/
    
    //     /usr/local/apr-util  
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    
    make && make install
    
    3.tomcat-nativeをインストールする
    cd /usr/local/
    wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.13/bin/apache-tomcat-8.5.13.tar.gz
    tar -zxvf apache-tomcat-8.5.13.tar.gz
    mv apache-tomcat-8.5.13 tomcat-v8.5
    
    ディレクトリを切り替えて、tomcat/binディレクトリの下でtomcat-native.tar.gzを見つけます。
    cd /usr/tomcat-v8.5/bin/
    
    解凍tomcat-native.tar.gz
    tar -zxvf tomcat-native.tar.gz
    
    ディレクトリを切り替え
    cd /usr/tomcat-v8.5/bin/tomcat-native-1.2.12-src/native/
    
    tomcatインストールアプリ
    ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.8.0_131 --with-ssl=/usr/bin --prefix=/usr/local/apr //          
    make && make install
    
    APRローカルライブラリをシステム共有ライブラリ検索パスに設定します。
    vi /etc/profile
    
    文書の最後に追加
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
    export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
    
    設定を有効にする
    source /etc/profile
    
    4.Tomcatプロファイルを変更する
    Tomcatディレクトリ下のconf/server.xmlファイルを修正し、関連するapr中のprotocolをapr-utilに変更します。
        
    
    5.試験の開始
    27-Aug-2018 10:02:58.733 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
    27-Aug-2018 10:02:58.790 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8010"]
    27-Aug-2018 10:02:58.856 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 4595 ms
    
    上の図Connectorによって起動されたログ情報は、最終的にorg.apache.coyote.http11.Http11AprProtocolを見ることができます。
    締め括りをつける
    上記はどのようにしてTomcatにAPRモードの完全な流れをサポートさせるかということです。みなさんはAPRモードとNIOモードとの比較で、性能の向上がどれぐらいはっきりしていますか?しかし、皆さんは次の文章を参考にしてみてください。
    tomcatの性能が3倍になるのは夢ではないです。
    この文は多すぎる技術の方面のものがなくて、主にビルの主人の本人がふだんいくつか仕事の中で操作するいくつか総括に対してで、後で復習を忘れて使うことに用いて、みんなの支持にお礼を言います。
    参考文献
    tomcatオフィシャル文書tomcatの性能を3倍に向上させるというのは夢ではなくTomcat APR運転モードを開きます。同時性能Linuxの下でTomcatにAPR Linuxをインストールします。