暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

项目记录(一):利用Tomcat部署dem和hsem

yuanzj 2021-06-08
992

       在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,这时并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。

  Tomcat 可以使用 apr 来提供更好的伸缩性、性能和集成到本地服务器技术,用来提高 tomcat 的性能。而tomcat native在具体的运行平台上提供了一种优化技术,它本身是基于 ARP(Apache Portable(轻便) Runtime)技术。在我们应用了tomcat native后,tomcat在跟操作系统级别的交互方面可以做得更好,并且它更像apache一样,可以更好地作为一台 web server。tomcat 可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能APR 提升的是静态页面处理能力。

(1).Tomcat的三种运行模式介绍

  Tomcat 有三种 运行模式,bio、nio、apr。

  bio(blocking I/O),阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。

  nio是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包),基于缓冲区、并能提供非阻塞I/O操作的Java API实现,比传统的I/O处理方式(bio)有更高的并发运行性能。是Tomcat8的默认运行模式。

  apr(Apache Portable Runtime/Apache可移植运行库)是Apache HTTP服务器的支持库。从操作系统级别解决异步I/O问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式。要tomcat支持apr,必须安装apr和native,这样tomcat才可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能。

(二).部署dem和hsem

1.上传jdk和tomct

过程略

2.部署jdk

a创建JAVA_HOME

    [root@yuanzjdm8 soft]# mkdir -p usr/lib/java/
    复制

    b解压文件到JAVA_HOME

      [root@yuanzjdm8 soft]# ll
      总用量 153088
      -rw-r--r-- 1 root root 11822805 67 20:45 apache-tomcat-10.0.6.tar.gz
      -rw-r--r-- 1 root root 144935989 67 21:03 jdk-8u291-linux-x64.tar.gz
      [root@yuanzjdm8 soft]# tar -zxvf jdk-8u291-linux-x64.tar.gz -C usr/lib/java/
      复制

      c配置环境变量,新建/etc/profile.d/jdk8.sh

        [root@yuanzjdm8 ~]# cat etc/profile.d/jdk8.sh
        export JAVA_HOME=/usr/lib/java/jdk1.8.0_291
        export JRE_HOME=${JAVA_HOME}/jre
        export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
        export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
        export PATH=$PATH:${JAVA_PATH}
        复制

        d使环境生效

          [root@yuanzjdm8 soft]# . etc/profile.d/jdk8.sh
          复制

          e查看jdk版本

            [root@yuanzjdm8 soft]# java -version
            java version "1.8.0_291"
            Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
            Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
            复制

            3.部署tomcat

            a解压tomcat到/opt目录下

              [root@yuanzjdm8 soft]# tar -zxvf apache-tomcat-9.0.46.tar.gz -C /opt
              复制

              b安装tomcat Native

                [root@yuanzjdm8 ~]# yum -y install apr-devel gcc gcc-c++ openssl-devel openssl
                复制

                c解压Tomcat Native包,编译安装

                  [root@yuanzjdm8 bin]# tar -zxvf tomcat-native.tar.gz -C usr/local/src/
                  [root@yuanzjdm8 bin]# cd usr/local/src/tomcat-native-1.2.28-src/native/
                  [root@yuanzjdm8 native]# ./configure --with-apr=/usr/ --with-java-home=/usr/lib/java/jdk1.8.0_291 --with-ssl
                  [root@yuanzjdm8 native]# make && make install  //编译安装
                  ----------------------------------------------------------------------
                  Libraries have been installed in:  //库安装在如下地址
                  /usr/local/apr/lib
                  If you ever happen to want to link against installed libraries
                  in a given directory, LIBDIR, you must either use libtool, and
                  specify the full pathname of the library, or use the `-LLIBDIR'
                  flag during linking and do at least one of the following:
                  - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
                  during execution
                  - add LIBDIR to the `LD_RUN_PATH' environment variable
                  during linking
                  - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
                  - have your system administrator add LIBDIR to `/etc/ld.so.conf'
                  See any operating system documentation about shared libraries for
                  more information, such as the ld(1) and ld.so(8) manual pages.
                  ----------------------------------------------------------------------
                  复制

                  d根据安装完成后的提示操作,把库添加到/etc/ld.so.conf

                    [root@yuanzjdm8 native]# vim etc/ld.so.conf
                    /usr/local/apr/lib 添加该行
                    [root@yuanzjdm8 native]# ldconfig  //重新加载
                    [root@yuanzjdm8 native]# echo "ldconfig" >> /etc/rc.local  //这是开机自启文件的软链接,需要源文件有执行权限
                    [root@yuanzjdm8 native]# ll /etc/rc.local
                    lrwxrwxrwx. 1 root root 13 5月 10 21:16 /etc/rc.local -> rc.d/rc.local
                    复制

                    e配置环境变量

                      [root@yuanzjdm8 native]# vim /etc/profile.d/jdk8.sh  //这是之前的JDK环境变量文件
                      export JAVA_HOME=/usr/lib/java/jdk1.8.0_291
                      export JRE_HOME=${JAVA_HOME}/jre
                      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
                      export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
                      export PATH=$PATH:${JAVA_PATH}
                      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib  //新增一行
                      [root@yuanzjdm8 native]# . /etc/profile.d/jdk8.sh  //刷新
                      复制

                      f配置APR

                         1)修改conf/server.xml里的协议
                          这个协议是<service>标签里的<Connector>标签的参数protocol,默认协议是HTTP/1.1。我们将协议修改为org.apache.coyote.http11.Http11AprProtocol
                        [root@yuanzjdm8 native]# vim /usr/local/tomcat8.5/conf/server.xml
                        <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"  //将HTTP/1.1修改为当前值
                        connectionTimeout="20000"
                        redirectPort="8443" />
                          2)在bin/catalina.sh中引用apr
                        [root@yuanzjdm8 native]# vim /usr/local/tomcat8.5/bin/catalina.sh
                        # Register custom URL handlers
                        # Do this here so custom URL handles (specifically 'war:...') can be used in the
                        security policy
                        JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"  //在这下面添加一行参数
                        JAVA_OPTS="$JAVA_OPTS -server -Xms256m -Xmx1024m -Djava.library.path=/usr/local/apr/lib"  //只要添加这一行
                        复制

                        g创建启动脚本,加入到系统环境

                          [root@yuanzjdm8 ~]# vim /etc/init.d/tomcat
                          #!/bin/bash
                          #
                          # tomcat startup script for the Tomcat server
                          #
                          # chkconfig: 345 80 20
                          # description: start the tomcat deamon
                          #
                          # Source function library
                          JAVA_HOME=/usr/lib/java/jdk1.8.0_291
                          ##这里指定JAVA的地址
                          export JAVA_HOME
                          CATALANA_HOME=/opt/apache-tomcat-9.0.46
                          ##这里指定Tomcat的地址
                          export CATALANA_HOME
                          case "$1" in
                          start)
                          echo "Starting Tomcat..."
                          $CATALANA_HOME/bin/startup.sh
                          ;;
                          stop)
                          echo "Stopping Tomcat..."
                          $CATALANA_HOME/bin/shutdown.sh
                          ;;
                          restart)
                          echo "Stopping Tomcat..."
                          $CATALANA_HOME/bin/shutdown.sh
                          sleep 2
                          echo
                          echo "Starting Tomcat..."
                          $CATALANA_HOME/bin/startup.sh
                          ;;
                          *)
                          echo "Usage: $prog {start|stop|restart}"
                          ;;
                          esac
                          exit 0
                          [root@yuanzjdm8 ~]# chmod +x /etc/init.d/tomcat  //添加执行权限
                          [root@yuanzjdm8 ~]# chkconfig --add tomcat  //添加到chkconfig管理
                          [root@yuanzjdm8 ~]# chkconfig --list tomcat
                          复制

                          4.发布dem

                          a创建dem元数据

                            [dmdba@yuanzjdm8 web]$ ls
                            dem_init.sql DEM.pdf demsdk.jar dem.war readme.txt
                            [dmdba@yuanzjdm8 web]$ disql SYSDBA/SYSDBA123
                            open fail! path:./libcrypto.so
                            服务器[LOCALHOST:5236]:处于普通打开状态
                            登录使用时间 : 1.107(ms)
                            disql V8
                            SQL> set CHAR_CODE UTF8
                            SQL> start dem_init.sql
                            复制

                            b修改dem连接信息

                            c上传dem.war到/opt/apache-tomcat-9.0.46/webapps目录下:

                                  过程略

                            d编辑conf/server.xml

                              <Connector port="8080" protocol="HTTP/1.1"... 追加属性字段  maxPostSize="-1";
                              复制

                              5.发布hsem

                              a创建hsem元数据

                              使用管理工具执行

                                 b修改dem连接信息

                              c上传manager.war到/opt/apache-tomcat-9.0.46/webapps目录下:

                                    过程略

                              6.重启tomcat

                                [root@yuanzjdm8 logs]# systemctl start tomcat
                                复制

                                a启动日志如下

                                  08-Jun-2021 07:12:08.175 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.46
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: May 8 2021 17:35:52 UTC
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.46.0
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Linux
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 3.10.0-1160.el7.x86_64
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: /usr/lib/java/jdk1.8.0_291/jre
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_291-b10
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /opt/apache-tomcat-9.0.46
                                  08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /opt/apache-tomcat-9.0.46
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.config.file=/opt/apache-tomcat-9.0.46/conf/logging.properties
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djdk.tls.ephemeralDHKeySize=2048
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Xms256m
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Xmx1024m
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.library.path=/usr/local/apr/lib
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dorg.apache.catalina.security.SecurityListener.UMASK=0027
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dignore.endorsed.dirs=
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.base=/opt/apache-tomcat-9.0.46
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.home=/opt/apache-tomcat-9.0.46
                                  08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.io.tmpdir=/opt/apache-tomcat-9.0.46/temp
                                  08-Jun-2021 07:12:08.182 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用APR版本[1.4.8]加载了基于APR的Apache Tomcat本机库[1.2.28]。
                                  08-Jun-2021 07:12:08.182 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR功能:IPv6[true]、sendfile[true]、accept filters[false]、random[true]。
                                  08-Jun-2021 07:12:08.182 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL配置:useAprConnector[false],useOpenSSL[true]
                                  08-Jun-2021 07:12:08.184 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL成功初始化 [OpenSSL 1.0.2k-fips 26 Jan 2017]
                                  08-Jun-2021 07:12:08.435 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-apr-8080"]
                                  08-Jun-2021 07:12:08.448 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[398]毫秒内初始化
                                  08-Jun-2021 07:12:08.465 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
                                  08-Jun-2021 07:12:08.469 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.46]
                                  08-Jun-2021 07:12:08.479 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web应用程序存档文件[/opt/apache-tomcat-9.0.46/webapps/dem.war]
                                  08-Jun-2021 07:12:18.337 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[/opt/apache-tomcat-9.0.46/webapps/dem.war]的部署已在[9,857]ms内完成
                                  08-Jun-2021 07:12:18.338 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web应用程序存档文件[/opt/apache-tomcat-9.0.46/webapps/manager.war]
                                  08-Jun-2021 07:12:24.393 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[/opt/apache-tomcat-9.0.46/webapps/manager.war]的部署已在[6,055]ms内完成
                                  08-Jun-2021 07:12:24.397 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-apr-8080"]
                                  08-Jun-2021 07:12:24.416 信息 [main] org.apache.catalina.startup.Catalina.start [15968]毫秒后服务器启动
                                  复制

                                  b登陆dem,网址:http://192.168.2.92:8080/dem/ 账号:admin 密码:888888

                                  c登陆hsem,网址:http://192.168.2.92:8080/manager/ 账号:admin 密码:888888


                                  (三)、总结

                                  1.在启动tomcat时,需要等待大概30S时间,hsem和dem平台才可以正常登陆

                                  2.建议使用apache-tomcat-10.0.6.tar.gz和jdk-8u291-linux-x64.tar.gz

                                  3.关闭防火墙






                                  文章转载自yuanzj,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                  评论