tomcat7.x配置APR高并发模式
Tomcat支持BIO/NIO/APR三种运行模式 ,性能各色春秋!
Apr插件提高Tomcat性能
Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术.
APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心。APR有很多用途,包括访问高级IO功能(例如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等等),本地进程管理(共享内存,NT管道和UNIX sockets)。这些功能可以使Tomcat作为一个通常的前台WEB服务器,能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器。
00、模式比较


01、不同版本的默认类型
tomcat7.x- 默认bio、tomcat8.x+默认nio
注意:基本arp能应对高并发(内核层次解决阻塞IO),非阻塞IO,内存占用小相对高点。高并发也说明流量大
BIO:同步阻塞
一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
NIO:同步非阻塞
APR:异步非阻塞
02、不同版本模式的配置
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port
-->
protocol
HTTP/1.0
HTTP/1.1
org.apache.coyote.http11.Http11Protocol - blocking Java connector
org.apache.coyote.http11.Http11NioProtocol - non blocking Java connector
org.apache.coyote.http11.Http11AprProtocol - the APR/native connector
03、运行模式的判别
判定运行方式
Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:
Starting ProtocolHandler ["http-bio-8080"]
Starting ProtocolHandler ["http-nio-8080"]
Starting ProtocolHandler ["http-apr-8080"]
04、安装apr支持库
install:
APR library
JNI wrappers for APR used by Tomcat (libtcnative)
OpenSSL libraries
Requirements:
APR 1.2+ development headers (libapr1-dev package)
OpenSSL 0.9.7+ development headers (libssl-dev package)
JNI headers from Java compatible JDK 1.4+
GNU development environment (gcc, make)
http://apr.apache.org/download.cgi #APR
http://archive.apache.org/dist/tomcat/tomcat-connectors/native #native
1、tomcat7.X演示
http://tomcat.apache.org/tomcat-7.0-doc/apr.html
2、编译环境准备工作
yum install -y gcc gcc-c++ make openssl-devel
3、编译安装apr
yum install -y apr #有的tomcat编译native需要高版本的apr+1.4.3,太低不行,就需要源码编译
./configure --prefix=/usr/local/apr
make && make install
tomcat-7.0.70/bin/
tomcat-native.tar.gz --源码
编译
./configure --with-apr=/usr/local/apr/ --with-java-home=/servyou_domain/jdk1.7.0_79/ --disable-openssl-version-check --with-ssl=yes
make && make install
注意:如果系统设置了jdk环境变量,就不需要制定JAVA_HOME,不对openssl版本限制,不需要加对openssl版本检查
05、apr的环境变量配置
1、配置到系统变量中
vi /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
source /etc/profile
2、配置APR本地库到系统共享库搜索路径中
拷贝/usr/local/apr/lib目录下所有动态库到/usr/lib或/lib系统共享库搜索目录下即可。
copy /usr/local/apr/lib/libtcnative* /usr/lib/
3、配置到catalina.sh脚本中
编辑$TOMCAT_HOME/bin/catalina.sh文件,在虚拟机启动参数JAVA_OPTS中添加java.library.path参数,指定apr库的路径
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"
关闭ssl,将SSLEngine的值从on改成off即可:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
Tomcat 6.x版本从6.0.32开始就默认支持apr
Tomcat 7.x版本从7.0.30开始就默认支持apr
06、tomcat配置修改
1、server.xml
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="1000"
maxHttpHeaderSize="8192"
acceptCount="1000"
disableUploadTimeout="true"
connectionTimeout="20000"
redirectPort="8230" />
tomcat7.x-Connector参数
http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
http://tomcat.apache.org/tomcat-8.0-doc/config/http.html
tomcat--Connector参数解读
<Connector
port="80" //监听端口
protocol="HTTP/1.1" //协议
enableLookups="false" //禁止反向DNS查询客户端主机名
maxThreads="600" //最大线程数
minSpareThreads="100" //初始化创建的线程数
maxSpareThreads="500" //一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。在7.8取消了
acceptCount="700" //最大等待数
connectionTimeout="20000" //连接超时
redirectPort="8443" //重定向
/>
2、catalina.sh
export JAVA_HOME="/servyou_domain/jdk1.7.0_79"
export JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms2g -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Djava.library.path=/usr/local/apr/lib"
下面的也是可以
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"
tomcat7.x配置APR高并发模式的更多相关文章
- Apache Tomcat 8.5 安全配置与高并发优化
通常我们在生产环境中,Tomcat的默认配置显然不能满足我们的产品需求,所以很多时候都需要对Tomcat的配置进行调优,以下综合我自己的经验来配置 Tomcat 安全与优化情况,如果你有更好的方案,请 ...
- Linux配置支持高并发TCP连接(socket最大连接数)
Linux配置支持高并发TCP连接(socket最大连接数) Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58| 分类:LNMP&a ...
- JBoss配置解决高并发连接异常问题(转)
这两天一个项目在做压力测试的时候,发现只要并发数超过250个,连续测试两轮就会有连接异常出现,测试轮数越多出现越频繁,异常日志如下: Caused by: com.caucho.hessian.cli ...
- ApacheTomcat 8 9 安全配置与高并发优化
编辑修改配置文件 [root@DaMoWang ~]# vim /usr/local/tomcat/conf/server.xml 禁用8005端口 telnet localhost 8005 然后输 ...
- 配置nginx 高并发 php
user www www; // nginx在运行时使用哪个账号的权限,每一个服务都以一个普通的账号的权限来运行,不要以root来运行 worker_processes 2; // 开启进程数,CPU ...
- IIS 7.5 配置10W高并发
原文: http://www.myhack58.com/Article/sort099/sort0100/2012/35585.htm 原文: http://www.myhack58.com ...
- Redis 高并发解决方案
针对大流量瞬间冲击,比如秒杀场景 redis前面可以加一层限流 sentinel / Hystrix redis高并发(读多写少)下缓存数据库双写误差: 1. 修改操作使用分布式锁(就是修改的时候加锁 ...
- Linux下配置tomcat+apr+native应对高并发
摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服 ...
- (转)Linux下配置tomcat+apr+native应对高并发
摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服 ...
随机推荐
- leetcode 266.Palindrome Permutation 、267.Palindrome Permutation II
266.Palindrome Permutation https://www.cnblogs.com/grandyang/p/5223238.html 判断一个字符串的全排列能否形成一个回文串. 能组 ...
- Zookeeper 安装与简单使用
一.安装Zookeeper 其实Zookeeper的安装特别简单,也不能算安装了,只需要将Zookeeper下载后解压,就完成了安装操作. 下载地址:http://zookeeper.apache.o ...
- matlab-数组取值
一起来学matlab-数组取值 觉得有用的话,欢迎一起讨论相互学习~Follow Me MATLAB中的字符串符号 :冒号 s1=['I am sad';'you are ';'interest'] ...
- clipboard 在 vue 项目中,on 事件监听回调多次执行
clipboard 定义一个全局变量 import ClipboardJS from "clipboard"; if(clipboard){ clipboard.destroy() ...
- [LeetCode] 167. Two Sum II - Input array is sorted 两数和 II - 输入是有序的数组
Given an array of integers that is already sorted in ascending order, find two numbers such that the ...
- 消息发送函数OSMboxPostOpt()
消息发送函数OSMboxPostOpt() 作用,ucos 3中的消息邮箱,具有广播功能,发送一条消息就可以使所有等待该消息的任务进入就绪状态,从而完成消息分发功能,具有一个消息唤醒多个任务的机制.
- fiddler 捕捉不到代码发出去的HTTP请求
检查代码里是不是把代理设置为空了,null. 或是通过.config文件禁用了代理.
- PKUWC2020自闭记
我才听说PKU今年对我省高二要求CSP分数>450? 我似乎丧失了一个溜去隔壁的机会? 机会是不存在的qwq THUWC3个数据结构直接送人升天 Day1 T1:感觉相邻的k!个排列是同构的可以 ...
- ReentrantLock 非公平锁不公平在哪
重入锁关键地带: 1:使用unsafe的cas方式对AQS中的state成员变量进行“原子加一”操作. 2:如果当前线程多次lock,相当于对state在原有值基础上继续加一操作:释放锁的条件为“原子 ...
- 阿里云ECS云服务器Linux Tomcat启动慢 访问网页转圈
状况: 今天购买了一台阿里云云服务器,按照正常的方式安装JDK,mysql,以及Tomcat 这里的版本信息有 系统 :Centos 7 tomcat: apache-tomcat-8.5.45.ta ...