当前位置: 首页 > 科技观察

详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

时间:2023-03-19 20:08:06 科技观察

详细讲解Tomcat三种运行模式(BIO、NIO、APR)的对比和场景分析两种运行模式:BIO、NIO、ARP。简要说明及配置运行方式1.bio:没有任何优化和处理,百并发性能极低。配置server.xml2.nio:使用java异步io技术,无阻塞IO技术.配置server.xml3.apr方式安装是最难,操作系统级别的控制,也是在Tomcat上运行高并发应用的最佳模式。配置apr模式后,需要安装apr和apr-utils、tomcat-native包(一)apr安装#tarzxfapr-1.5.2.tar.gz-C/usr/local/src/#cd/usr/local/src/apr-1.5.2/#./配置--prefix=/usr/local/apr&&make&&makeinstall(2)apr-utilsinstall#tarzxfapr-util-1.5.4.tar.gz-C/usr/local/src/#cd/usr/local/src/apr-util-1.5.4/#./configure--with-apr=/usr/local/apr/--prefix=/usr/local/apr-utils&&make&&makeinstall(3)tomcat-native安装#cd/usr/local/apache-tomcat-7.0.65/bin/#tarzxftomcat-native.tar.gz#cdtomcat-native-1.1.33-src/jni/native#./configure--with-apr=/usr/local/apr--with-java-home=/usr/local/java/&&make&&makeinstall(4)配置APR环境变量#vim/etc/profile添加如下配置exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib使配置生效#来源/etc/profileBIO,NIO,AIO应用场景分析:BIO方式适用于连接数比较少的情况而且架构固定,这种方式对服务器资源的要求比较高,并发量仅限于应用。在JDK1.4之前是唯一的选择,但是程序直观易懂。NIO方式适用于连接数较多,连接比较短(轻操作)的架构,比如聊天服务器,并发量受限于应用,编程比较复杂,JDK1.4开始支持。AIO方式用于连接数较多,连接比较长(操作量大)的架构,比如相册服务器,完全调用OS参与并发操作。编程比较复杂,JDK7开始支持了。这三种模式的区别如下:BIO:一个线程处理一个请求。缺点:并发高时,线程数大,浪费资源。Tomcat7及以下版本,Linux系统默认使用此方式。NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。APR:ApachePortableRuntime,从操作系统层面解决io阻塞问题。Tomcat7或Tomcat8在Win7及以上系统中默认以这种方式启动。官方详细描述了这三种类型的区别:Tomcat启动时,可以通过日志看到Connector使用的是哪种运行模式:StartingProtocolHandler["http-bio-8080"]StartingProtocolHandler["http-nio-8080"]StartingProtocolHandler["http-apr-8080"]我个人感觉在tomcatbio、nio、apr模式中,各有各的适用场合,也不好说哪个好哪个不好,就像tomcat的内存配置一样,如果内存设置过大,gc垃圾回收机制会变慢;内存设置太小,tomcat会出现内存溢出,所以设置在一个合适的范围内很重要,不仅不会出错,而且GC会频繁回收,从而在性能上达到一个最优的结果。当然,这也需要根据不同的场合进行不同的测试,才能产生最好的效果!