一、Connector有bio、nio、apr三种运行模式
1、Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理。可通过线程池机制改善。
2、Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
3、Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS(操作系统)先完成了再通知服务器应用去启动线程进行处理。
BIO:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
BIO缺点:
当客户端多时,会创建大量的处理线程。每个线程都要占用栈空间和一些CPU时间。
阻塞可能带来频繁的上下文切换,而大部分的上下文切换是无意义的。
就一般而言,BIO模式是三种运行模式中性能最低的一种。
NIO:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443" />
NIO的工作原理包括:
1.由一个专门的线程来处理所有的 I/O 事件、并负责分发。
2.事件驱动机制,而不再同步地去监视事件。
3.线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的,减少无谓的线程切换。
APR:apr(Apache portable Run-time libraries/Apache可移植运行库)是Apache HTTP服务器的支持库。
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />
tomcat apr配置方法:https://www.cnblogs.com/freeweb/p/6430053.html。
网友评论