在谈到tomcat优化时,必然要说到apr库,这个库是C语言实现的,tomcat通过JNI方式使用该库可以大大提高性能。

tomcat在使用apr时需要安装apr,apr-util和tomcat-native。

1. 下载

apr和apr-util需要单独下载:http://apr.apache.org/download.cgi。

tomcat-native就在$CATALINA_HOME/bin目录下:tomcat-native.tar.gz。

2. 安装apr库

(1)安装apr:安装在/usr/local/apr

[root@centosx64_tomcat1 ~]# tar xvf apr-1.6.2.tar.gz
[root@centosx64_tomcat1 ~]# cd apr-1.6.2
[root@centosx64_tomcat1 apr-1.6.2]# ./configure --prefix=/usr/local/apr
[root@centosx64_tomcat1 apr-1.6.2]# make && make test && make install

(2)安装apr-util:安装到/usr/local/apr-util

[root@centosx64_tomcat1 ~]# tar xvf apr-util-1.6.0.tar.gz
[root@centosx64_tomcat1 ~]# cd apr-util-1.6.0
[root@centosx64_tomcat1 apr-util-1.6.0]# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util
[root@centosx64_tomcat1 apr-util-1.6.0]# make && make install

3. 安装tomcat-native

[root@centosx64_tomcat1 ~]# cd TOMCAT_HOME/bin
[root@centosx64_tomcat1 ~]# tar xvf tomcat-native.tar.gz
[root@centosx64_tomcat1 ~]# cd tomcat-native-1.1.30-src/jni/native
[root@centosx64_tomcat1 ~]# ./configure --with-apr=/usr/local/apr --with-java-home=$JAVA_HOME && make && make install

4. 配置tomcat使用apr库

有2种方式配置tomcat使用apr库:

方式一:配置环境变量

在unix系统中,只要$LD_LIBRARY_PATH变量值所在路径包含tomcat本地库,默认就使用org.apache.coyote.http11.Http11AprProtocol。

vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/apr/lib
source /etc/profile

方式二:将apr库路径参数添加到系统变量中(推荐)

编辑$CATALINA_HOME/bin/setenv.sh文件(如果文件不存在,新建文件):

export CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"

修改$TOMCAT_HOME/conf/server.xml:

<Connector port="8000" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"

protocal修改为:org.apache.coyote.http11.Http11AprProtocol,重启tomcat。

5. 检查是否安装成功

如果看到下面的启动日志,表示成功.

Sep 17, 2017 1:59:19 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8080"]
Sep 17, 2017 1:59:19 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-apr-8009"]
Sep 17, 2017 1:59:19 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 31002 ms

6. 解决报错

(1)./configure时报错:

[root@centosx64_tomcat1 apr-1.6.2]# ./configure --prefix=/usr/local/apr
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
Configuring APR library
Platform: x86_64-pc-linux-gnu
checking for working mkdir -p... yes
APR Version: 1.6.2
checking for chosen layout... apr
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in '/root/apr-1.6.2':
**configure: error: no acceptable C compiler found in $PATH**
See `config.log' for more details

fix: 需要安装gcc编译器

[root@centosx64_tomcat1 apr-1.6.2]# yum -y install gcc

(2)./configure时报错:

[root@centosx64_tomcat1 apr-1.6.2]# ./configure --prefix=/usr/local/apr
configure: creating ./config.status
config.status: creating Makefile
config.status: creating include/apr.h
config.status: creating build/apr_rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating apr-1-config
config.status: creating apr.pc
config.status: creating test/Makefile
config.status: creating test/internal/Makefile
config.status: creating include/arch/unix/apr_private.h
config.status: executing libtool commands
**rm: cannot remove `libtoolT': No such file or directory**
config.status: executing default commands

fix: 修改configure脚本

Edit your configure file:vim configure

Change the line

$RM "$cfgfile"
to $RM -f "$cfgfile"
This will resolve the error rm: cannot remove `libtoolT': No such file or directory
Then try run configure. That's it :)

参考:https://stackoverflow.com/questions/18091991/error-while-compiling-apache-apr-make-file-not-found

tomcat优化之安装并配置apr库的更多相关文章

  1. tomcat是什么?Tomcat 下载、安装、配置图文教程

    你用浏览器上网的所有操作,所有请求发送给服务器(tomcat),服务器通过请求,找相应的逻辑处理程序(jsp或servelet或java类,就是有关java语言的所有可以处理逻辑的代码,其中包括访问后 ...

  2. Tomcat服务器的安装及配置

    学习目标: 了解Tomcat服务器的主要作用 掌握Tomcat服务器的安装与配置 掌握Tomcat安装目录下主要文件夹的作用 jsp的执行流程 1.Web的工作原理流程图:从图中可以看出Tomcat服 ...

  3. JavaWeb:Tomcat服务器的安装与配置

    Tomcat服务器的安装与配置 安装 输入网址进入Tomcat的官网            在左边导航栏选择对应下载的版本            下载安装包形式            下载并解压到我们 ...

  4. CentOS安装、配置APR和tomcat-native

    APR:Apache Portable Run-time libraries,Apache可移植执行库 在早期的Apache版本号中.应用程序本身必须可以处理各种详细操作系统平台的细节,并针对不同的平 ...

  5. Tomcat服务的安装与配置

    介绍 百度百科 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开 ...

  6. 27、Tomcat服务的安装与配置

    服务器名称 ip地址 slave-node1 172.16.1.91 27.1. Tomcat简介: Tomcat是Apache软件基金会(Apache Software Foundation)的Ja ...

  7. Tomcat服务的安装及配置

    在进行Java Web开发时必须有Web服务器的支持,常用的Web服务器便是Tomcat,本文主要介绍Tomcat的安装和配置.客户端通过Web浏览器发送一个基于HTTP协议的请求到服务器上后,服务器 ...

  8. Tomcat服务器的安装和配置

    一.Tomcat下载 可以直接从Apache的网站上下载Tomcat(http://tomcat.apache.org/),进入首页后,在左边Download一栏可选择你要下载的版本,点击便可进入To ...

  9. CentOS 7 Tomcat服务的安装与配置

    3422人阅读  http://blog.51cto.com/13525470/2073657 一.Linux下的Java运行环境 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由S ...

随机推荐

  1. 计算几何细节梳理&模板

    点击%XZY巨佬 向量的板子 #include<bits/stdc++.h> #define I inline using namespace std; typedef double DB ...

  2. BZOJ 5097: [Lydsy1711月赛]实时导航(最短路 + bitset)

    题意 \(n​\) 个点的有向图,边权 \(\in \{1, 2, 3, 4\}​\) ,\(m​\) 次修改边权/加边/删边,\(q​\) 次询问:以 \(s_i​\) 为起点,输出它到其他点的最短 ...

  3. 【CF618F】Double Knapsack(构造)

    [CF618F]Double Knapsack(构造) 题面 洛谷 Codeforces 题解 很妙的一道题. 发现找两个数集很不爽,我们强制加强限制,我们来找两个区间,使得他们的区间和相等. 把区间 ...

  4. 【bfs】拯救少林神棍(poj1011)

    Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度.请你 ...

  5. cf351B Jeff and Furik (树状数组)

    逆序对数=0的时候,这个数列是有序的 然后交换相邻的,看哪个比较大,逆序对数会加1或减1 Jeff用的是最优策略所以他肯定让逆序对数-1 设f[i]表示Jeff操作前,逆序对数为i,最终的期望次数 那 ...

  6. bzoj4337树的同构

    树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树. 对于两个树T1和T2,如果能够把树T1的所有点重 ...

  7. Java并发编程-阻塞队列(BlockingQueue)的实现原理

    背景:总结JUC下面的阻塞队列的实现,很方便写生产者消费者模式. 常用操作方法 常用的实现类 ArrayBlockingQueue DelayQueue LinkedBlockingQueue Pri ...

  8. Win32-API: 终于能正常的捕获焦点事件: WM_COMMAND、BN_SETFOCUS、EN_SETFOCUS

    学习和使用win32-api来写窗口程序算算也有二三年了. 以前有个需求,想捕获控件的焦点事件(SETFOCUS. KILLFOCUS),我一直认为应该捕获 WM_SETFOCUS 和 WM_KILL ...

  9. 扩展方法、委托和Lambda

    举例演化Lambda string[] names ={"Burke", "Connor", "Frank", "Everett& ...

  10. django 前端 js让一段文本中包含的网址可以被访问

    这个功能还是挺刚需的,下面说说实现过程,用到了正则表达式. 1.原本的html部分代码: <h4 id="softadd">链接: https://pan.baidu. ...