zoukankan      html  css  js  c++  java
  • 再谈一次关于Java中的 AIO(异步IO) 与 NIO(非阻塞IO)

    今天用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

  • 相关阅读:
    四叔的c++入门课(6) 条件语句
    四叔的c++入门课(5)变量类型
    四叔的c++入门课程(4)赋值语句与表达式
    四叔的c++入门课(3)变量
    如何选购笔记本电脑?
    四叔的c++入门课(2)Hello World
    四叔的c++入门课(1)什么是编程
    CSS3 transition-property属性
    display:inline、block、inline-block的区别?
    wps怎样删除空白页 WPS文档的空白页如何删除
  • 原文地址:https://www.cnblogs.com/personnel/p/4584871.html
Copyright © 2011-2022 走看看