小伙伴们,你们好呀!我是老寇!
1.1.BIO模式介绍
1).阻塞式I/O,tomcat7及以下默认是bio模式
2).每个客户端连接时,需要单独开启一个线程来处理客户端的请求
1.2.BIO模式缺点
1).客户端较多时,需要大量的线程来处理,而且每个线程需要占用一部分栈空间
2).阻塞可能带来频繁的上下文切换
2.1.NIO模式介绍
1).非阻塞I/O,nio是一个基于缓冲区并能提供非阻塞I/O的JavaAPI,比bio拥有更好的并发运行性能,核心组件包括channel(通道) => 类似流,双向通道,可读可写;selector(选择器)=> 根据不同事件,在各通道切换;buffer(缓冲区)=> 一个内存块,底层是数据
2).tomcat8及以上版本默认使用nio模式
2.2.NIO原理
1).由专门的线程来处理所有I/O事件、并负责分发
2).事件驱动机制,而不再同步地去监视事件
3).线程之间通过wait、notify等方式通讯,保证每次上下文切换有意义,减少无谓线程切换
3.1.APR模式介绍
Apache 可移植运行库,tomcat使用JNI来调用,大幅度提高了服务器的处理和响应性能,是tomcat运行高可用应用的首选模式
apr安装包:https://pan.baidu.com/s/1swrV9ffJnmz4S0mfkuBbIw
提取码:1111
- # 安装 插件 gcc
- yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel expat-devel
-
- # 将下载的文件放在/opt
-
- cd /opt
-
- tar -xvzf /opt/apr-1.7.0.tar.gz
-
- cd apr-1.7.0
-
- ./configure --prefix=/usr/local/apr/lib
-
- make && make install
-
- cd /opt
-
- tar -xvzf /opt/apr-iconv-1.2.2.tar.gz
-
- cd apr-iconv-1.2.2
-
- ./configure --with-apr=/usr/local/apr/lib --with-java-home=/usr/local/jdk
-
- make && make install
-
- cd /opt
-
- tar -xvzf /opt/apr-util-1.6.1.tar.gz
-
- cd apr-util-1.6.1
-
- ./configure --with-apr=/usr/local/apr/lib --with-java-home=/usr/local/jdk
-
- make && make install
-
- cd /opt
-
- tar -xvzf /opt/tomcat-native-1.2.33-src.tar.gz
-
- cd tomcat-native-1.2.33-src/native
-
- ./configure --with-apr=/usr/local/apr/lib --with-java-home=/usr/local/jdk
-
- make && make install
- vi /etc/profile
-
- export LD_LIBRARY_PATH=/usr/local/apr/lib
-
- # 生效配置
- source /etc/profile
- public class XXXApplication implements WebServerFactoryCustomizer<WebServerFactory> {
-
- public static void main(String[] args) {
- SpringApplication.run(XXXApplication.class, args);
- }
-
- @Override
- public void customize(WebServerFactory factory) {
- TomcatServletWebServerFactory containerFactory = (TomcatServletWebServerFactory) factory;
- containerFactory.setProtocol("org.apache.coyote.http11.Http11AprProtocol");
- }
- }
-Djava.library.path=/usr/local/apr/lib

大功告成