Tomcat 8/9 基于APR库的高并发性能优化 原创 Mr大表哥 2019-01-22 12:27:48 博主文章分类:java日常问题汇总 ©著作权 文章标签 APR BIO NIO NIO2 文章分类 运维 ©著作权归作者所有:来自51CTO博客作者Mr大表哥的原创作品,请联系作者获取转载授权,否则将追究法律责任 一、知识点扫盲 什么是APR? Apache Portable Runtime(APR)项目的任务是创建和维护软件库,为底层平台特定的实现提供可预测且一致的接口。主要目标是提供一个API,软件开发人员可以对其进行编码,并确保可预测的行为,如果不是相同的行为,无论其软件构建的平台如何,都可以减轻他们编写特殊情况的需要,以便解决或采取行动。平台特定缺陷或功能的优势。 二、tomcat的三种模式 Tomcat的运行模式有3种,即BIO、NIO和APR。 1、BIO(blocking I/O) 即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。(Tomcat7 或以下,在 Linux 系统中默认使用这种方式。建议弃用,本模式已经被淘汰。 2、NIO(new I/O) 是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求。 想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为: protocol="org.apache.coyote.http11.Http11NioProtocol" 2.5、NIO2(new I/O2) 就是NIO模式的增强版,功能和NIO一样,但是性能更强。 想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为: protocol="org.apache.coyote.http11.Http11Nio2Protocol" 3、APR 安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能. 必须要安装apr和native,直接启动就支持apr。本文下面重点就是介绍怎么安装和启动APR。 三、安装APR前的官方要求 APR 1.2+ development headers (libapr1-dev package) OpenSSL 1.0.2+ development headers (libssl-dev package) JNI headers from Java compatible JDK 1.4+ GNU development environment (gcc, make) 四、本文生产环境以及系统要求 CentOS Linux release 7.6.1810 (Core)x86 64 (服务器必须是centos7版本,centos6以及6以下的版本不能使用APR) Server version: Apache Tomcat/8.5.35 java version “1.8.0_191” 五、安装APR相关依赖包 [root@APR ~]# yum -y install gcc gcc-c++ libtool* autoconf automake expat-devel perl perl-devel 六、下载安装包 > [root@APR ~]# mkdir /software [root@APR ~]# cd /software/ [root@APR software]# wget http://mirror.rise.ph/apache//apr/apr-1.6.5.tar.gz [root@APR software]# wget http://mirror.rise.ph/apache//apr/apr-iconv-1.2.2.tar.gz [root@APR software]# wget http://mirror.rise.ph/apache//apr/apr-util-1.6.1.tar.gz [root@APR software]# wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz **友情提示**:apr、apr-iconv、apr-util都是截止到2019年1月22日的最新版本,openssl是最新的稳定版,openssl的官网原文翻译如下: 最新的稳定版本是1.1.1系列。这也是我们的长期支持(LTS)版本,支持到2023年9月11日。我们之前的LTS版本(1.0.2系列)将继续得到支持,直到2019年12月31日(安全修复仅在支持的最后一年)。1.1.0系列目前仅接收安全修复程序,并将于2019年9月11日停止支持。鼓励1.0.2和1.1.0的所有用户尽快升级到1.1.1。0.9.8,1.0.0和1.0.1版本现在不受支持,不应使用。 因此,建议使用1.1.1版本,不要再使用其他版本!!! 七、安装APR > [root@APR software]# tar zxf apr-1.6.5.tar.gz [root@APR software]# cd apr-1.6.5/ [root@APR apr-1.6.5]# vim configure 默认值: 在第30392行 **RM='$RM'** 修改为: 在第30392行 **RM='$RM -f'** [root@APR apr-1.6.5]# ./configure --prefix=/usr/local/apr && make && make install 八、安装apr-iconv > [root@APR apr-1.6.5]# cd .. [root@APR software]# tar zxf apr-iconv-1.2.2.tar.gz [root@APR software]# cd apr-iconv-1.2.2/ [root@APR apr-iconv-1.2.2]# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr && make && make install 九、安装apr-util > [root@APR apr-iconv-1.2.2]# cd .. [root@APR software]# tar zxf apr-util-1.6.1.tar.gz [root@APR software]# cd apr-util-1.6.1/ [root@APR apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-icOnv=/usr/local/apr-iconv/bin/apriconv && make && make install 十、安装OpenSSL > [root@APR apr-util-1.6.1]# cd .. [root@APR software]# tar zxf openssl-1.1.1.tar.gz [root@APR software]# cd openssl-1.1.1/ [root@APR openssl-1.1.1]# ./config --prefix=/usr/local/openssl && make -j $(grep processor /proc/cpuinfo | wc -l) && make install 十一、安装tomcat-native > [root@APR openssl-1.1.1]# cd /usr/local/tomcat/bin/ [root@APR bin]# tar zxf tomcat-native.tar.gz [root@APR bin]# cd tomcat-native-1.2.18-src/native/ [root@APR native]# ./configure --with-ssl=/usr/local/openssl --with-apr=/usr/local/apr --with-java-home=/usr/local/java && make && make install **友情提示1**:博主这里的jdk安装路径在/usr/local/java,是自定义环境,读者切莫直接粘贴,要改成你实际的jdk路径。 **友情提示2**:注意:如果以上 configure 失败,可以执行 make distclean 清除。 十二、添加环境变量 > [root@APR native]# vim /etc/profile.d/apr.sh > export LD_LIBRARY_PATH=/usr/local/apr/lib:$LD_LIBRARY_PATH > [root@APR native]# source /etc/profile.d/apr.sh **到此为止APR就安装完成了,下面我们使用APR模式** 十三、修改tomcat配置文件,使用APR运行模式,并测试是否安装成功 > [root@APR native]# vim /usr/local/tomcat/conf/server.xml //请按你实际tomcat安装路径为准 默认值: 69 Connector port="8080" protocol="HTTP/1.1" 70 cOnnectionTimeout="20000" 71 redirectPort="8443" 修改为: 69 Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" 70 cOnnectionTimeout="20000" 71 redirectPort="8443" 默认值: 116 Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 修改为: 116 Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" > **友情提示**:如果你的服务器上没有使用apache,则可以把8009端口的那一行配置给注释掉。 十四、重启tomcat,并查看日志 > [root@APR native]# /usr/local/tomcat/bin/shutdown.sh [root@APR native]# /usr/local/tomcat/bin/startup.sh [root@APR native]# tail -f /usr/local/tomcat/logs/catalina.out ----- > 22-Jan-2019 12:17:18.157 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/docs] has finished in [11] ms 22-Jan-2019 12:17:18.157 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/examples] 22-Jan-2019 12:17:18.321 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/examples] has finished in [163] ms 22-Jan-2019 12:17:18.321 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/host-manager] 22-Jan-2019 12:17:18.337 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/host-manager] has finished in [16] ms 22-Jan-2019 12:17:18.337 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/manager] 22-Jan-2019 12:17:18.351 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/manager] has finished in [14] ms 22-Jan-2019 12:17:18.354 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["**http-apr-8080**"] 22-Jan-2019 12:17:18.364 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["**ajp-apr-8009**"] 22-Jan-2019 12:17:18.366 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 474 ms **友情提示**:查看日志看到“http-apr-8080”和“ajp-apr-8009”字样就是APR模式运行成功。 十五、查看日志可能出现的错误 > INFO [main] **org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]** 如果遇到这样的错误,解决办法如下(一般不会出现这样的错误,博主安装了不下10遍APR没出现这问题,这个问题来自一个同事的安装报错): 问题出现原因:提示找不到基于APR的Apache Tomcat Native库,因此无法使用APR模式启动。 解决方案: cp -R /usr/local/apr/lib/* /usr/lib64 cp -R /usr/local/apr/lib/* /usr/lib > 然后再次重启tomcat即可! 十六、请支持正版博客地址,盗链可耻 > https://blog.51cto.com/zpf666 赞 收藏 评论 分享 举报 上一篇:java密钥长度受限制问题解决 下一篇:Monit开源服务器监控工具的知识点 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Tomcat基础 一、Java基础1.1 后台应用架构1.1.1 单体架构单体架构(Monolithic Architecture)是一种传统的软件架构模式,把所有的功能都放在同一个应用里,将整个应用部署在一台服务器上。在单体架构中,所有的功能模块都被打包在一起(比如Java实现就打包成jar包或war包部署),共享同一个代码库和数据库。 优点:开发简单:由于整个 Java tomcat Tomcat部署项目 步骤1. 下载安装 Tomcat官网地址:https://tomcat.apache.org/download-90.cgi根据系统、版本进行下载2. 部署 Tomcat 服务器将下载的压缩包解压到一个非中文目录下,结构如下。3.启动测试a. 双击 \bin 目录下的 startup.bat,启动服务器(如果一闪而过,那就是没有配置 JAVA_HOME 的环境变量)b. 在浏览 xml tomcat 文件名 Tomcat会话保持 一、利用 Nginx 反向代理至后端的 Tomcat1.1 部署环境说明IP地址用途192.168.131.11Tomcat1,Memcached1192.168.131.12Tomcat2,Memcached2192.168.131.13Redis192.168.131.14Nginx1.2 配置说明利用Nginx反向代理功能,实现上图的代理功能,将用户请求转发至后端Tomcat主机。注意:生产 Tomcat Memcached 会话保持 Tomcat9安装 安装JDK#使用YUM的方式安装JDK, 生产环境建议编译安装yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel#声明环境变量, "java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64" 的值需要到 /usr/lib/jvm/ 目录下确认下, 我的是CentOS系统其他系统可能有些差别ech java mysql tomcat Tomcat9配置 1.官网下载地址:https://tomcat.apache.org/ 2.windows64位,tomcat9下载安装。 tomcat apache 变量名 Tomcat9配置https链接 Tomcat9配置https链接 Tomcat https 记录centos安装tomcat9 (1)安装java运行环境yum-yupdateyumsearchjava#这里会出现与java相关的包java-1.8.0-openjdk.x86_64:OpenJDKRuntimeEnvironmentyum-yinstalljava-1.8.0-openjdk.x86_64yum-yinstalljava-1.8.0-openjdk-devel.x86_64java-version#open centos 安装 tomcat9 Tomcat9配置HTTP/2 1概述Tomcat从Tomcat8的一些较新版本就支持HTTP/2了,Tomcat9直接支持,本文首先讲述了相关HTTP/2的特性,接着利用一个简单的开源工具mkcert生成证书并利用该证书配置HTTP/2。2HTTP/2特性首先介绍一下HTTP/2特性,这也从另一方面解释了为什么需要使用HTTP/2。2.1二进制分帧HTTP/2在应用层与传输层增加了一个二进制分帧,能够达到“在不改动HTTP语义 Tomcat HTTP/2 银河麒麟安装tomcat9 1、下载安装包apache-tomcat-9.0.33.tar.gz 2、创建安装路径: 进入安装 tomcat apache java Tomcat9安装windows服务 Tomcat9安装windows服务 Tomcat Linux 安装配置Tomcat9 一、说明本文主要是介绍下Mac上连接Linux安装并配置Tomcat,如果有不对的地方,恳请指正。二、开始安装1、环境准备JDK版本:1.8.0_191java -versionLinus版本:7.6.1810lsb_release -a2、安装步骤官网地址:https://tomcat.apache.org/download-90.cgi2.1、新建 ... Linux Linux Tomcat tomcat9虚拟主机配置 tomcat9虚拟主机配置 tomcat9 虚拟主机 tomcat9控制台中文乱码 1、找到${CATALINA_HOME}/conf/logging.properties2、找到java.util.logging.ConsoleHandler.e Tomcat java tomcat 重启 Tomcat9下war包启动部署 1、将项目打成WAR包放在Tomcat的webapps目录下2、在Tomcat的安装目录的conf下找到server.xml的文件,如:D:\apache-tomcat-9.0.8\conf\server.xml3、在Host标签里边添加<Host name="localhost" appBase="" unpackWARs="true" autoDeploy="true"... tomcat xml war包 apache 学习 Zbbix4.0 如何监控 tomcat9 啦啦啦,琢磨了两天,看了很多文档,看了太多抄的帖子了,所以最后特别想写个这个文档,算是给自己复习吧,步骤肯定是没有问题的,如果要细看,就各种慢慢百度去吧背景:zabbix4.0需要监控别的机器的tomcat,而且那个tomcat的端口用的是9090的,废话不多说,直接上图看着来弄吧1、zabbixserver端,要安装些东西,名字叫zabbix-java-gateway,我的方法是,先弄个zabb zabbix zabbi-java-gateway tomcat linux DockerFile自定义镜像Tomcat9 目录下载tomcat容器卷1、创建文件夹2、在上述目录下touch c.txt3、将jdk和tomcat安装的压缩包拷贝进上一步目录4、在/heian/mydockerfile/tomcat9目录下新建Dockerfile文件5、构建6、run7、验证8、结合前述的容器卷将测试的web服务test发布总结下载tomcat容器卷1、创建文件夹... docker dockerfile 镜像 Tomcat6升级到Tomcat9 服务器上一直用的tomcat6,因为被扫描到诸多漏洞,特将版本升到时下最新的版本Tomcat/9.0.0.M22。简单记录一下整个升级过程。 升级 Tomcat Tomcat9 tomcat9配置https 首先使用以下命令生成密钥库 我输入的密钥口令是123456 组织单位名称就是你的域名,我的就是localhost 得到一个.keystore的文件,我把这个文件复制到tomcat的conf文件目录里面 在tomcat的server.xml中添加一个connector,代码如下 然后重启tomcat, tomcat apache java xml 套接字 tomcat9安装教程 版本:9.0.52 1、下载 官网地址:https://tomcat.apache.org/download-90.cgi https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9. ... tomcat apache xml 官网 v9 centos 7 tomcat9 配置 https://blog.csdn.net/qq_21077715/article/details/85541685 https://blog.csdn.net/cruel_xuan/article/details/78437934?utm_source=blogxgwz5 https://blog tomcat Javascript 用户名