办网站用什么证件,淘宝seo什么意思,网页qq登陆首页,emloh转wordpress摘要#xff1a;在慢速网络上Tomcat线程数开到300以上的水平#xff0c;不配APR#xff0c;基本上300个线程狠快就会用满#xff0c;以后的请求就只好等待。但是配上APR之后#xff0c;Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输… 摘要在慢速网络上Tomcat线程数开到300以上的水平不配APR基本上300个线程狠快就会用满以后的请求就只好等待。但是配上APR之后Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作这时并发的线程数量明显下降从原来的300可能会马上下降到只有几十新的请求会毫无阻塞的进来。 一、三种运行模式介绍 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为 Connector port80 protocolorg.apache.coyote.http11.Http11NioProtocol connectionTimeout20000 URIEncodingUTF-8 useBodyEncodingForURItrue enableLookupsfalse redirectPort8443 / 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下tomcataprnative配置 二、linux下配置tomcataprnative 2.1 安装包准备 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的安装包 2.2 安装JDK 这是运行Tomcat的首要环境,所以这一步最先执行。 2.2.1 解压 tar -zxvf jdk-7u76-linux-x64.tar.gz 2.2.2 创建/usr/local/java文件夹 mkdir -p /usr/local/java 2.2.3 移动到/usr/local/java mv jdk1.7.0_76 /usr/local/java 2.2.4 添加环境变量 vi /etc/profile 再最后添加上 #jdk1.7
export JAVA_HOME/usr/local/java/jdk1.7.0_76
export CLASSPATH$JAVA_HOME/lib/
export PATH/usr/local/ruby/bin:$PATH:$JAVA_HOME/bin 2.2.5 重启环境变量使配置生效 source /etc/profile 查看是否生效 出现以下字样则表示安装成功接下来安装tomcat 2.3 安装tomcat 2.3.1 解压tomcat tar -zxvf apache-tomcat-7.0.56.tar.gz 2.3.2 改名为tomcat7 mv apache-tomcat-7.0.56 tomcat7 2.3.3 修改tomcat内存jvm内存 我这里tomcat是放在/home目录下 vi /home/tomcat7/bin/catalina.sh 在里面添加 JAVA_OPTS-server -Xms1024M -Xmx1024M -XX:PermSize512M -XX:MaxNewSize512M -XX:MaxPermSize512M 2.3.4 修改运行模式 vi /home/tomcat7/conf/server.xml 添加上 !-- 配置apr --Connector executortomcatThreadPoolport8080 protocolorg.apache.coyote.http11.Http11AprProtocolURIEncodingUTF-8 enableLookupsfalse acceptCount50connectionTimeout1000 maxKeepAliveRequests250redirectPort8443 / 下面贴出一个server.xml完整的配置 ?xml version1.0 encodingutf-8?Server port9016 shutdownSHUTDOWN!--关闭https安全验证 --Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineoff /Listener classNameorg.apache.catalina.core.JasperListener /Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener /Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener /Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener /GlobalNamingResourcesResource nameUserDatabase authContainertypeorg.apache.catalina.UserDatabasedescriptionUser database that can be updated and savedfactoryorg.apache.catalina.users.MemoryUserDatabaseFactorypathnameconf/tomcat-users.xml //GlobalNamingResourcesService nameCatalina!--The connectors can use a shared executor, you can define one or more named thread pools--!-- 配置线程 --Executor nametomcatThreadPool namePrefixcatalina-exec-maxThreads500 minSpareThreads25maxIdleTime4000/!-- 配置apr --Connector executortomcatThreadPoolport8080 protocolorg.apache.coyote.http11.Http11AprProtocolURIEncodingUTF-8 enableLookupsfalse acceptCount50connectionTimeout1000 maxKeepAliveRequests250redirectPort8443 /Connector port9109 protocolAJP/1.3 redirectPort8443 /Engine nameCatalina defaultHostlocalhostRealm classNameorg.apache.catalina.realm.LockOutRealmRealm classNameorg.apache.catalina.realm.UserDatabaseRealmresourceNameUserDatabase//RealmHost namelocalhost appBasewebappsunpackWARstrue autoDeploytrue!-- 配置访问日志格式 --Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogsprefixlocalhost_access_log. suffix.txtpattern%h %l %u %t quot;%rquot; %s %b //Host/Engine/Service
/Server 2.4 安装tomcat-native 2.4.1 进入到/home/tomcat7/bin/ cd /home/tomcat7/bin 2.4.2 解压tomcat-native.tar.gz tar -zxvf tomcat-native.tar.gz 2.4.3 进入到解压后的目录 cd tomcat-native-1.1.31-src/jni/native 2.4.4 检测、编译、安装 ./configure --with-apr/usr/local/apr/bin/apr-1-config --with-java-home/usr/local/java/jdk1.7.0_76 make make install 2.5 安装apr 需要安装apr-1.5.2.tar.gz和apr-util-1.5.4.tar.gz 2.5.1 解压apr-1.5.2.tar.gz和apr-util-1.5.4.tar.gz tar -zxvf apr-1.5.2.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz 2.5.2 检测、编译、安装 进入到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 2.6 修改最大文件句柄数和打开文件的数目 由于打开文件会比较多所以要考虑修改默认打开文件数目 2.6.1 修改/etc/sysctl.conf net.ipv4.ip_local_port_range 10240 65535
net.ipv4.ip_nonlocal_bind 1 2.6.2 在/etc/security/limits.conf最后增加如下两行记录 * soft nofile 65535* hard nofile 65535 2.6.3 加载bridge模块 modprobe bridge 2.6.4 重新载入sysctl,使其改变生效 sysctl -p 2.6.5 再退出重新登陆用ulimit -a查看 可以看到open files已经由默认的1024变成了65535 2.7 启动tomcat /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 原因上面有3个参数依赖于bridge模块该模块如果没有加载则会现上面的输出错误 解决方案执行modprobe bridge命令加载bridge模块 转载于:https://www.cnblogs.com/zishengY/p/7101616.html