vlambda博客
学习文章列表

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

       在慢速网络上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.shexport JAVA_HOME=/usr/lib/java/jdk1.8.0_291export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATHexport JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexport PATH=$PATH:${JAVA_PATH}

d使环境生效

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

e查看jdk版本

[root@yuanzjdm8 soft]# java -versionjava 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/libIf you ever happen to want to link against installed librariesin a given directory, LIBDIR, you must either use libtool, andspecify 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 variableduring execution- add LIBDIR to the `LD_RUN_PATH' environment variableduring 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 formore 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.locallrwxrwxrwx. 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_291export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATHexport JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/binexport 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 thesecurity policyJAVA_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 libraryJAVA_HOME=/usr/lib/java/jdk1.8.0_291##这里指定JAVA的地址export JAVA_HOMECATALANA_HOME=/opt/apache-tomcat-9.0.46##这里指定Tomcat的地址export CATALANA_HOMEcase "$1" instart) 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}" ;;esacexit 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]$ lsdem_init.sql DEM.pdf demsdk.jar dem.war readme.txt[dmdba@yuanzjdm8 web]$ disql SYSDBA/SYSDBA123open fail! path:./libcrypto.so服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间 : 1.107(ms)disql V8SQL> set CHAR_CODE UTF8SQL> 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";

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

5.发布hsem

a创建hsem元数据

使用管理工具执行

   b修改dem连接信息

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

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.4608-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: May 8 2021 17:35:52 UTC08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.46.008-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Linux08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 3.10.0-1160.el7.x86_6408-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd6408-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: /usr/lib/java/jdk1.8.0_291/jre08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_291-b1008-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation08-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /opt/apache-tomcat-9.0.4608-Jun-2021 07:12:08.177 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /opt/apache-tomcat-9.0.4608-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.properties08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djdk.tls.ephemeralDHKeySize=204808-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.protocol.handler.pkgs=org.apache.catalina.webresources08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Xms256m08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Xmx1024m08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.library.path=/usr/local/apr/lib08-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dorg.apache.catalina.security.SecurityListener.UMASK=002708-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.4608-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.home=/opt/apache-tomcat-9.0.4608-Jun-2021 07:12:08.178 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.io.tmpdir=/opt/apache-tomcat-9.0.46/temp08-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.关闭防火墙