码迷,mamicode.com
首页 > 编程语言 > 详细

再谈一次关于Java中的 AIO(异步IO) 与 NIO(非阻塞IO)

时间:2015-06-18 09:21:09      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

今天用ab进行压力测试时,无意发现的:

 

Requests per second:    xxx [#/sec] (mean)

ab -n 5000 -c 1000 http://www:8080/upload/5kb.jpg    (NIOServer: 700     AIO: 400)  

ab -n 5000 -c 1000 http://www:8080/upload/18kb.jpg  (NIOServer: 560     AIO: 360)

ab -n 2000 -c 100  http://www:8080/upload/134kb.jpg (NIOServer: 330     AIO: 300)

ab -n 2000 -c 200  http://www:8080/upload/134kb.jpg (NIOServer: 330     AIO: 260)

ab -n 3000 -c 500  http://www:8080/upload/134kb.jpg (NIOServer: 300     AIO: 310)

ab -n 5000 -c 800  http://www:8080/upload/134kb.jpg (NIOServer: 270     AIO: 280)

 

以前测试大部分使用的是 -k (开启:Connection: keep-alive),测试的时候发现AIO完胜NIO。

 

今天没有使用参数: -k,从上面的结果可以看出:

 

1. NIO 在高并发的时候,如果处理的是小图片(1kb - 100kb),NIO的并发性能比AIO还要好。

原因也很简单,NIO不管有多少并发,一般只使用2 - 3个线程来处理,在处理小图片时,高并发,CPU利用率90%+,并发性能很好。

而AIO,由于是异步的,传输文件使用的是一个线程池,一般会使用20 - 30个线程, 在处理小图片时,高并发,由于线程较多,CPU利用率在 50%  - 70%,并且多个线程切换也浪费了一些性能,并发性就不如NIO了。

 

2. 当处理的文件越来越大,如100KB+,高并发的时候,AIO就达到或超过NIO了,两者工作时的CPU利用率:90%+

 

2013-03-06

再谈一次关于Java中的 AIO(异步IO) 与 NIO(非阻塞IO)

标签:

原文地址:http://www.cnblogs.com/personnel/p/4584871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!