• 再谈一次关于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

  • 相关阅读:
    ajax 中文乱码问题 主要是IE浏览器
    js 带省略号的分页源码及应用实例
    js iframe onload &line-height浏览器兼容问题
    Js 正则表达式特殊字符含义
    js prototype
    js call apply caller callee bind
    怎么查看一个网站是用什么语言编写的?
    ASP.NET之AreaRegistration
    产品经理
    程序猿全面充电10本书
  • 原文地址:https://www.cnblogs.com/personnel/p/4584871.html
Copyright © 2020-2023  润新知