分类目录:IO和NIO

以下是分类 IO和NIO 下的所有文章

Proactor和reactor,水平触发和边缘触发

IO分类 同步阻塞 同步非阻塞 多路复用 基于信号的IO 异步IO Reactor 同步阻塞 同步非阻塞 多路复用 基于信号的IO Proactor 异步IO 水平触发 pool, select 边缘触发 epool Reactor和Proactor http://www.cnblogs.com/dawen/archive/2011/05/18/2050358.html 1、标准定义 两种I/O多路复用模式:Reactor和Proactor 一般地,I/……

【未完待续】Java后台线上服务优化小记

最近,一直负责开发公司内部的Restful服务框架,并与公司的代码审核和CI上线流程进行整合,整合的过程中需要开发线上Restful服务的启动脚本,于是,发现一些线上的服务配置没有进行过优化,因此,简单的做了下压测,尝试和对比,对线上服务进行了简单的优化,优化过程记录如下: 1. 原先GC堆的大小设置为-Xms128m -Xmx1g,……

Netty和Jetty线程模型的对比

Netty boss线程池,前端每个端口一个boss线程,负责accept事件。 worker线程池,固定数量,默认是处理器数量的2倍,每个线程一个select对象,负责read&write事件,并进行handler的执行。 executor,可选,在有长事务的时候,workder线程会返回,将SocketChannel交给executor。 Jetty 2 accept线程:负责处理accept事……

Mina和Netty区别之小结

1. 二者buffer分配方式和分配算法不同。 mina使用heapbytebuffer,每次使用bytebuffer.allocate去分配。同时根据『满则增大一倍,两次一半则缩减一半』。这很大程度上使mina的buffer抖动多,影响io吞吐量。 netty使用directbytebuffer,同时有buffercache的存在,在buffersize不变的情况下,重复使用。分配大小依赖buffe……

【转载】【经典】Netty和Mina性能测评与分析暨Buffer分配策略对比

原文连接:流行NIO框架Netty和Mina性能测评与分析 测试方法 采用Mina和Netty各实现一个基于NIO的EchoServer,测试在不同大小网络报文下的性能表现。   测试环境 客户端-服务端: model name: Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz cache size: 6144 KB cpu cores: 4 jdk: 1.6.0_30-b12 network: ……

如何利用iostats -xk命令的输出计算IO并发数

我们在一些低端的机器上,使用的是普通的SATA硬盘,那么IO一定是串行的,也就是服务完一次IO再服务下次IO,但是,在一些高性能的服务器上,服务器大都使用RAID,RAID可以使用RAID0,RAID01,RAID3,RAID5等进行条带化,使IO进行一定的并行化,这样能够有效的提高效率,本文就讨论如何使用iostats命令来计算IO并行数。 对于串……

Memcache的三种Java客户端的对比和选择

Memcache作为一个著名的缓存项目支持多种语言和多种形式的客户端,作为一个Java开发人员,我们必须了解各种客户端的不同,这有利于我们在技术选型的时候充分的评估其优缺点,从而选择最佳的缓存产品以及缓存客户端,最终对技术选型进行合理的决策。 1.官方提供的基于传统阻塞io由Greg Whalin维护的客户端memcached client……

Hotspot JVM GC算法和垃圾收集器

垃圾回收算法 引用计数 – 不能识别循环以来,MS COM Smart Pointer使用,或者教学上使用。 拷贝(Copy-Stop) – Jvm新生代使用,适合朝生夕灭的对象。 标记清除(Mark-Sweep) – CMS老年带默认使用 标记整理(Mark-Sweep-Slide Over) – CMS 老年代通过配置可以使用,适合大对象,生命周期长的对象。 ……

Redis为什么是单线程?

1. Redis基本是内存操作,在IO和网络操作的时候,多线程的程序可以很好的利用CPU时间。那在基本是内存操作的情况下,单线程程序应该可以充分利用CPU时间了。 2. 由于是内存操作,所以用户响应时间很短。 我们知道Redis是用”单线程-多路复用IO模型”来实现高性能的内存数据服务的,这种机制避免了使用锁,但是……

Redis vs. Memcache

Redis   服务器端: 非阻塞IO,单线程,适合短小的操作逻辑,有复杂的长逻辑会影响性能,对于长逻辑应该配置多个实例来提高多核CPU的利用率, 也就是可使用单机器多端口来配置多个实例,官方推荐一台机器使用8个实例,基于libevent中关于epoll的两个文件加上自己简单实现的事件通知, 设计的简单小巧,作者的思想就是……

IO多路复用技术

当下,在Java服务器编程领域,NIO可谓是无处不在,大家在做技术方案时也是无处不谈及NIO,但是真正要理解NIO,需要上升到操作系统层面,在操作系统层面才能体会到什么是NIO,而要理解NIO,则需要首先理解什么是IO多路复用技术,因为在绝大多数的Java服务器领域,当下使用的仍然是IO多路复用技术,尽管AIO也初露头角,但是……