![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netty
文章平均质量分 76
m1f2c3
这个作者很懒,什么都没留下…
展开
-
netty框架分析
https://github.com/wuyinxian124/nettybook2.git使用com.phei.netty.frame.delimiter.EchoServer做实验使用这个工程时要处理一下pom的包冲突,否则调试的时候回显"alternative"之类让你选择代码的操作重点参考文章:https://segmentfault.com/a/1190000007282628一、主要对象一般来说,server有boss线程和work线程,client只有work线程。boss和wo.原创 2021-02-21 10:28:25 · 270 阅读 · 0 评论 -
netty boss线程的selector中的keys集合的初始化流程
https://github.com/wuyinxian124/nettybook2.git使用com.phei.netty.frame.delimiter.EchoServer做实验使用这个工程时要处理一下pom的包冲突,否则调试的时候回显"alternative"之类让你选择代码的操作pom文件见文末附件几个比较重要的方法1、io.netty.util.concurrent.ThreadPerTaskExecutor#execute创建新线程2、sun.nio.ch.WindowsSe.原创 2021-02-15 13:08:01 · 286 阅读 · 0 评论 -
netty 数据如何传到worker线程&handler链式调用
https://github.com/wuyinxian124/nettybook2.git使用com.phei.netty.frame.delimiter.EchoServer做实验使用这个工程时要处理一下pom的包冲突,否则调试的时候回显"alternative"之类让你选择代码的操作俩问题1、数据如何传到worker线程2、netty中如何实现多个handler链式调用数据如何传到worker线程 @Override public void read().原创 2021-02-13 11:29:36 · 456 阅读 · 1 评论 -
dubbo rpc NettyClient连接
consumer获取channelNettyChannel.CHANNEL_MAP(静态变量)中存储着channel。/** * the cache for netty channel and dubbo channel */ private static final ConcurrentMap<Channel, NettyChannel> CHANNEL_MAP = new ConcurrentHashMap<Channel, NettyChannel&g原创 2020-12-06 12:21:18 · 430 阅读 · 0 评论 -
netty缓存引起的堆内存使用率过高
问题现象原因解决方案方案一:重启应用。这个方案治标不治本。重启应用的过程中可能会遇到一些问题,可以参考:jdos应用重启提示“jsf部分标识上线”。方案二:既然是netty缓存造成的问题,禁用缓存就可以了。方案三:配置gc参数-XX:+UseConcMarkSweepGC //开启cms gc-XX:CMSInitiatingOccupancyFraction=80 //老年代占用80%时进行full gc-XX:+UseCMSInitiatingOccupancyOnly //让cms原创 2020-11-22 09:20:50 · 1585 阅读 · 2 评论 -
netty Recycler(三)WeakOrderQueue unreachable
由于线上问题是由大量的WeakOrderQueue$Link对象引起的,而这些对象都是unreachable,为了研究线上问题的原因,尝试重新构建出WeakOrderQueue$Link的unreachable。目前已构建出WeakOrderQueue的unreachable(有些成员变量是私有的,不好获取,目前只能获取到WeakOrderQueue层次。以后通过反射的方法应该可以获取到Link)。package study.recycler.again;import io.netty.util..原创 2020-12-13 11:32:43 · 416 阅读 · 0 评论 -
netty Recycler(二)——WeakOrderQueue和Stack
之前一直搞不清楚WeakOrderQueue的用途,“将别的线程的对象回收到本线程"还是"将别的线程的对象回收到别的线程”(前者是对的)。所以研究了一下package study.recycler.again;import io.netty.util.Recycler;import java.util.concurrent.ConcurrentLinkedQueue;public class CycliMutiThread { private static final Recycl.原创 2020-12-12 18:56:53 · 452 阅读 · 1 评论 -
netty Recycler(一)
此文章是研究netty过程中的记录,很有可能有很多不对的地方,欢迎指正之所以研究netty Recycler,是因为生产环境中遇到了由其引发的堆内存占用率过高的现象。实验所用源码回收对象分为两种:同一线程 不同线程。同一线程在同一线程中,对象回收至Recycler$Stack中实验代码package test.recycler;import io.netty.util.Recycler;import io.netty.util.concurrent.FastThreadLocalTh.原创 2020-11-22 10:51:33 · 643 阅读 · 0 评论 -
netty Recycler(四) 多线程回收对象时竞争机制的解决
假设线程1创建了大量对象,线程2和线程3同时回收线程1的对象,当这两个线程第一次回收对象时会创建WeakOrderQueue,并将其添加到线程1的Stack。多个线程操控一个Stack,这就造成了竞争。那么netty是如何解决竞争?代码package study.recycler.again;import io.netty.util.Recycler;import java.util.concurrent.ConcurrentLinkedQueue;/** * 断点2 主线程回收池中会有大原创 2020-12-16 08:46:20 · 316 阅读 · 1 评论 -
netty 接收数据 发送数据
代码如下。服务端是一个echo服务。程序中client和server都有读写操作,且两者的读写操作调用的底层结构相同。package com.tcp;import io.netty.bootstrap.Bootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.chann原创 2021-01-17 11:30:11 · 2698 阅读 · 2 评论 -
netty服务端启动时的线程创建
唤醒主线程时的调用堆栈notifyAll:-1, Object (java.lang)setSuccess0:501, DefaultPromise (io.netty.util.concurrent)setSuccess:389, DefaultPromise (io.netty.util.concurrent)setSuccess:76, DefaultChannelPromise (io.netty.channel)setSuccess:71, DefaultChannelPromise (原创 2021-02-09 11:44:04 · 421 阅读 · 0 评论