本文共 4298 字,大约阅读时间需要 14 分钟。
一、三种运行模式介绍
Tomcat 有三种(bio,nio.apr) 运行模式,首先来简单介绍下
bio 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包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为
apr (Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。
要tomcat支持apr,必须要安装apr和native,这样tomcat可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能。
Tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。
接下来介绍linux下tomcat+apr+native配置
jdk-7u76-linux-x64.tar.gz(必须JDK1.7以上才支持apr)
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
apache-tomcat-7.0.56.tar.gz(解压之后其bin目录下包含tomcat-native的安装包)
这是运行Tomcat的首要环境,所以这一步最先执行。
tar -zxvf jdk-7u76-linux-x64.tar.gz
mkdir -p /usr/local/java
mv jdk1.7.0_76 /usr/local/java
vi /etc/profile
再最后添加上
#jdk1.7export JAVA_HOME=/usr/local/java/jdk1.7.0_76 export CLASSPATH=$JAVA_HOME/lib/export PATH=/usr/local/ruby/bin:$PATH:$JAVA_HOME/bin
source /etc/profile
查看是否生效
出现以下字样则表示安装成功,接下来安装tomcat
tar -zxvf apache-tomcat-7.0.56.tar.gz
mv apache-tomcat-7.0.56 tomcat7
我这里tomcat是放在/home目录下
vi /home/tomcat7/bin/catalina.sh
在里面添加
JAVA_OPTS="-server -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxNewSize=512M -XX:MaxPermSize=512M"
vi /home/tomcat7/conf/server.xml
添加上
下面贴出一个server.xml完整的配置
cd /home/tomcat7/bin
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.1.31-src/jni/native
./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=/usr/local/java/jdk1.7.0_76 && make && make install
需要安装apr-1.5.2.tar.gz和apr-util-1.5.4.tar.gz
tar -zxvf apr-1.5.2.tar.gztar -zxvf apr-util-1.5.4.tar.gz
进入到apr-1.5.2,执行
./configure --prefix=/usr/local/apr && make && make install
进入到apr-util-1.5.4,执行
./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-utils && make && make install
由于打开文件会比较多,所以要考虑修改默认打开文件数目
net.ipv4.ip_local_port_range = 10240 65535net.ipv4.ip_nonlocal_bind = 1
* soft nofile 65535 * hard nofile 65535
modprobe bridge
sysctl -p
可以看到open files已经由默认的1024变成了65535
/home/tomcat7/bin/startup.sh
出现以下提示则表示配置成功
3.1、启动tomcat时报“The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/apr/lib”
解决方案:确保tomcat-native安装成功,否则执行上面2.5,如果依旧不成功,请执行下面步骤
#vi /opt/tomcat_api_8035/bin/catalina.sh
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
3.2、安装apr时报‘Neither the JAVA_HOME nor the JRE_HOME environment variable is defined“
解决方案:这是未设置环境JAVA_HOME与JAVA_JRE目录,请确保安装jdk成功,确认/etc/profile环境变量配置正确
3.3、在执行sysctl -p的时候发现输出出现以下错误
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
转载地址:http://ujell.baihongyu.com/