xxl-rpc icon indicating copy to clipboard operation
xxl-rpc copied to clipboard

A high performance, distributed RPC framework.(分布式服务框架XXL-RPC)

Results 20 xxl-rpc issues
Sort by recently updated
recently updated
newest added

`19:43:35.021 logback [nioEventLoopGroup-4-1] ERROR c.x.r.r.n.i.n.c.NettyHttpClientHandler - >>>>>>>>>>> xxl-rpc netty_http client caught exception io.netty.handler.codec.TooLongFrameException: Response entity too large: DefaultHttpResponse(decodeResult: success, version: HTTP/1.1) HTTP/1.1 200 OK content-type: text/html;charset=UTF-8 content-length: 6818748 connection: keep-alive...

选用XxlRpcAdminRegister注册中心时 服务列表的数据 客户端本地缓存存一份 db存一份 磁盘文件存一份 本地缓存和db我理解,但为什么还要在磁盘存一份 而且需要线程维护一致性 如果: 直接存一份在db里(redis),不但减少维护一致性的代码,而且服务禁用时,请求者也不会有延迟

项目中使用了xxljob,xxljob依赖了xxlrpc(1.4.1版本),发现在特定情况下调度线程池堆积任务,最终拒绝新的调度任务。 查询来原因有2个,第一NettyHttpConnectClient没有链接超时时间(这个问题我查看1.6版本已经加上了,默认写死10秒)。 第二个问题是在com.xxl.rpc.core.remoting.net.common.ConnectClient#getPool这个方法中,使用了synchronized加锁。假设xxljob每秒触发一次同一个任务,调用getPool方法频率为每秒1次,而获取client超时10秒才释放,如此每秒会阻塞9个线程,最终导致线程池任务堆积满。 ![Snipaste_2020-09-02_10-34-26](https://user-images.githubusercontent.com/9190342/91925603-ef166e00-ed07-11ea-9fb0-685b40c518e7.jpg) 复现方法: 在xxljob上设置手动执行器指定ip,设置任务每秒触发一次(理论上频率低于10秒一次就会出现来不及释放的情况)。当这个执行器的机器直接从局域网中移除(拔网线),就会出现任务堆积,线程被锁在getPool 94行。 建议优化这块加锁逻辑,可以采用trylock+超时时间来防止线程阻塞在这里。

很频繁的一直在打印这个日志,相隔时间差不多10分钟左右一次; 2021-02-01 16:44:09.010 [nioEventLoopGroup-12944-1] [TID: N/A] ERROR c.x.r.r.n.i.n.client.NettyHttpClientHandler - >>>>>>>>>>> xxl-rpc netty_http client caught exception com.xxl.rpc.util.XxlRpcException: xxl-rpc request data empty. at com.xxl.rpc.remoting.net.impl.netty_http.client.NettyHttpClientHandler.channelRead0(NettyHttpClientHandler.java:39) at com.xxl.rpc.remoting.net.impl.netty_http.client.NettyHttpClientHandler.channelRead0(NettyHttpClientHandler.java:19) at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)...

https://github.com/xuxueli/xxl-rpc/blob/6ff3c03e28181bc3a186239dfb19c8788fff9b9f/xxl-rpc-core/src/main/java/com/xxl/rpc/core/remoting/net/params/Beat.java#L16 这里问什么要搞个匿名内部类,和之前的客户端版本不一致呀

在init时,如若不断发生无法连接,连接拒绝,连接超时等异常时,netty相关组件无法close。造成内存泄漏。在这种错误数过多时,会有oom 以及fd 句柄膨胀进而达到限制,无法调度的风险

雪里兄好,我在使用过程中发现有线程泄漏的问题,跟这位老兄的情况比较相似,但是我还没有看到很多的代码。我使用的xxl-job版本为2.0.2,xxl-rpc是1.4.0。由于开发环境没有xxl-admin,所以在发布时间一两天后,发现了有内存溢出,full gc过于频繁的问题,一开始发现byte[] object[] char[]过多,只定位到是netty出的问题,后用jprofiler查看内存,发现有线程数过多的情况,最终定位到是xxl造成的nettygroup线程过多造成的,截图如下: 后沿着注册的Exception定位到是NettyHttpConnectClient#init方法中this.channel = bootstrap.connect(host, port).sync().channel();中sync()方法失败则造成nettyGroup的channel线程失去管理。由于我没有对netty深入研究过,这个地方是否应该在更高层级对资源进行限定,channel是否也应该避免用很多线程的粗放模式。原来提这个issue的老兄跟我说的比较像,是同一个问题吗,以及现在是否已经解决? _Originally posted by @geercode in https://github.com/xuxueli/xxl-rpc/issues/35#issuecomment-647295014_

一致性hash策略时没有使用方法入参作为hash对象