Netty调优

Netty百万级推送服务设计要点:http://www.infoq.com/cn/articles/netty-million-level-push-service-design-points/

Netty服务端优化

  1. 在高并发场景下,服务端EventLoopGroup处理注册事件、任务处理1个处理能力是有限的,我尽可能使用最大,CUP:2*4,16线程,可配置最大16
    EventLoopGroup workerGroup = new NioEventLoopGroup(16);

  2. 高并发Handle处理请求业务使用业务线程池异步处理业务
    ExecutorService businessThreadPool = Executors.newFixedThreadPool(16);

  3. Netty4使用对象池,重用缓冲区
    bootstrap.option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT);
    bootstrap.childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT);

  4. Linux 默认单进程打开的最大句柄数是1024,高并发场景需要修改最大句柄数

  • 查看当前句柄数
1
[root@localhost ~]# ulimit -a
  • 修改limits.conf文件
1
[root@localhost ~]# vi /etc/security/limits.conf

修改成最大句柄数,添加如下配置参数,修改后保存,注销用户,重新登录,通过ulimit -a 查看是否生效。

1
2
* soft nofile 65536
* hard nofile 65536

Netty客户端优化

  • 自动调整下一次缓冲区建立时分配的空间大小,避免内存的浪费
1
bootstrap.option(ChannelOption.RCVBUF_ALLOCATOR, AdaptiveRecvByteBufAllocator.DEFAULT);
  • 使用内存池
1
bootstrap.option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT);
  • Netty客户端使用BlockingQueue对象池初始化,池的大小跟格CPU线程数进行配置,实现多Channel工作
  • Netty客户端实现心跳机制保持长链接,在空闲时每3秒做心跳
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值