[JAVA]AIO的问题,跪求有经验的来分享一下心得

朱宏青 发布于 2014/11/02 12:25
阅读 271
收藏 0

之前试了NIO,写了一个类似Netty/Mina的实例.(不得不说,Netty比Mina在性能、稳定、扩展等方面好上不少)

大致了解了NIO的情况,也发现了一些可能的瓶颈.看了下还有个AIO,自然也得试一下.

小试了一下,发现性能确实高了点

(Echo Server)

ab -c 6000 -n 30000 -k http://127.0.0.1:10087/

 Concurrency Level:      6000
 Time taken for tests:   3.380 seconds
 Complete requests:      30000
 Failed requests:        0
 Write errors:           0
 Non-2xx responses:      30000
 Keep-Alive requests:    30000
 Total transferred:      3210000 bytes
 HTML transferred:       0 bytes
 Requests per second:    8875.23 [#/sec] (mean)
 Time per request:       676.039 [ms] (mean)
 Time per request:       0.113 [ms] (mean, across all concurrent requests)
 Transfer rate:          927.39 [Kbytes/sec] received

上面是Netty5在我本地的测试,同样的命令AIO跑到12000左右,并且时间更短(2.8秒左右)

然后就开始挖坑...大致架构如下

翻了不少CodeStore,发现有用的数据少之胜少...

由于已经发现不少坑了(不过都可以处理),有木有坑过的前辈,来分享一下坑的经验? :)

加载中
0
马太航
马太航

JAVA AIO都是伪的,仔细查选下UNIX网络编程 2卷里有详细说明。


至于Mina 和 Netty 真的没自己写NIO效果好。

朱宏青
朱宏青
哎,主要还是AIO的实现方式一直有问题: http://www.tuicool.com/articles/J3q2ma 关于Mina于Netty的话,如果你不参照它们自己写,还是会遇到不少坑,并且性能不一定有他们好(尤其是Netty,Netty5中对ByteBuffer的再利用非常高) :)
返回顶部
顶部