【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”
IO多路复用 阻塞与非阻塞的区别在于进行读操作和写操作的系统调用时,如果此时内核态没有数据可读或者没有缓冲空间可写时,是否阻塞。 IO多路复用的好处在于可同时监听多个socket的可读和可写事件,这样就能使得应用可以同时监听多个socket,释放了应用线程资源。 Tomcat各类Connector对比 Connector的实现模式有三种,分别是BIO、NIO、APR,可以在server.xml中指定。 JIO:用java.io编写的TCP模块,阻塞IO NIO:用java.nio编写的TCP模块,非阻塞IO,(IO多路复用) APR:全称Apache Portable Runtime,使用JNI的方式来进行读取文件以及进行网络传输 Apache Portable Runtime是一个高度可移植的库,它是Apache HTTP Server 2.x的核心。 APR具有许多用途,包括访问高级IO功能(如sendfile,epoll和OpenSSL),操作系统级功能(随机数生成,系统状态等)和本地进程处理(共享内存,NT管道和Unix套接字)。 表格中字段含义说明: Support Polling:是否支持基于IO多路复用的socket事件轮询 Polling Size:轮询的最大连接数 Wait for next Request:在等待下一个请求时,处理线程是否释放,BIO是没有释放的,所以在keep-alive=true的情况下处理的并发连接数有限 Read Request Headers:由于request header数据较少,可以由容器提前解析完毕,不需要阻塞 Read Request Body:读取request body的数据是应用业务逻辑的事情,同时Servlet的限制,是需要阻塞读取的 Write Response:跟读取request body的逻辑类似,同样需要阻塞写 NIO处理相关类 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |