项目记录(一):利用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
[ ]
总用量 153088
-rw-r--r-- 1 root root 11822805 6月 7 20:45 apache-tomcat-10.0.6.tar.gz
-rw-r--r-- 1 root root 144935989 6月 7 21:03 jdk-8u291-linux-x64.tar.gz
[ ]
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.关闭防火墙