tomcat连接器(conncector)可以配置成NIO方式 
今天没事对IO和NIO分别做了下测试 
配置如下: 

Java代码  tomcat io 与 nio性能比较_tomcat io、nio

  1. <Connector port="8080" protocol="HTTP/1.1"   

  2.                connectionTimeout="20000"   

  3.                redirectPort="8443"   

  4.                executor="tomcatThreadPool" />  


Java代码  tomcat io 与 nio性能比较_tomcat io、nio

  1. <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"   

  2.                connectionTimeout="20000"   

  3.                redirectPort="8443" />      

  

主要测试两类资源: 
动态页面(带数据库查询,偏重IO和cpu) 
静态页面(无数据库操作,主要考察处理简单请求的能力) 

结果如下: 
动态页面 

Java代码  tomcat io 与 nio性能比较_tomcat io、nio

  1. 并发数 100 200 300 400 600 800  

  2. IO     206 215 209 205 210 206  

  3. NIO    192 194 189 194 195 191  



静态页面 

Java代码  tomcat io 与 nio性能比较_tomcat io、nio

  1. 并发数 100 200 300 400 600 800  

  2. IO     941 306 361 361 347 400  

  3. NIO    927 313 318 703 286 914  



可以看出在处理动态资源时NIO的优势并不明显甚至还不如IO,其主要原因是动态资源,是IO和cpu密集型操作,导致很多请求都阻塞在CPU和IO上,所以socket IO只能干等着,发挥不出NIO的优势 

再看处理静态时NIO的表现,虽然不稳定但性能的提升还是很明显的,所以NIO常常用来处理请求多并且处理起来比较简单的应用中,如memcached