Netty的worker线程只负责nio,在收到完整数据后将数据按要求封装并放入到业务数据队列;业务处理类负责从该队列中取出数据并处理。

这里的业务处理类现在是如何实现的?按你的说法,单线程和多线程 在这个类中都试验过,并且都没能解决问题,由此来看 可以得出2个结论:(1)需要再努力优化业务处理过程以节省处理时间;(2)提升服务器硬件性能。######回复 @阿森lin1991 : 我也是碰到这个问题,单位时间内大量客户端同时连接上来,服务端线程来不及处理。就大量堆积在队列里,请问有办法解决吗?######回复 @阿森lin1991 : 你netty什么版本?netty3和4的线程模型有不小区别,推荐infoq上李林峰写的《netty升级血泪史》######如果netty没有相应api接口的话,那就无解了。看看新版本中是否有,或者可以参考下######回复 @阿森lin1991 : 回复 @阿森lin1991 : 关键是netty接收消息队列消息时造成的阻塞;netty3.0中有ExecutionHandler可以使用(其实也是一个线程池,work执行到ExecutionHandler时直接返回执行下一个channel);我现在也遇到这样的问题,希望可以找到一起其他的解决办法,比如非阻塞接收消息队列消息。######2:接第1条...所以想把消息输出也放在nioEventLoopGroup(worker)线程中执行,即业务处理完后把输出消息压入输出队列,但是怎样才能调用nioEventLoopGroup(worker)线程去处理这个输出队列了?好像没有相关接口###### 1  netty本身的 worker线程的个数是根据CPU来的,直接在 worker线程里做业务逻辑处理不好么? 2 如果不想并发,修改源码,让worker线程个数为1,就没有并发了,这一点跟redis一样的,redis单线程的处理能力貌似也够用了,redis的作者是这么说的。 3 为啥要自定义多个业务逻辑线程?netty本身的worker线程拿到消息后就可以处理了啊 ######回复 @阿森lin1991 : 没必要为每个消息加业务逻辑处理线程,并发量多,线程自然多,这样跟IO模型就没区别了。收到数据后消息处理直接用worker线程,当你预估的业务逻辑实在是太费资源才开一个线程,这个线程中尽量不要有类变量已减少并发错误或人为加锁。实在不能满足需求,可以考虑用RMI把复杂逻辑放到另外的机器上做分布式处理######1.worker线程更多的负责读写网络数据,对于复杂或耗时的业务处理都交由自定义的逻辑线程处理,不然很可能阻塞nio线程,大大减少并发量。 2.我现在的情况不是worker线程并发有问题,而是自定义了逻辑线程并发有问题(阻塞情况比较严重) 3.同1 不过谢谢你...###### 你现在的问题跟Netty没有关系,主要是你的业务处理速度跟不上你所要求的请求速度,单线程也好,多线程也好,都没有关系。 处理不过来, 1,要不把超时的改掉或做优化处理 2,增强处理速度:找到瓶颈优化或者做请求分发到不同服务器处理 ######同意这种说法,最好是将业务线程能够优化######(2)提升服务器硬件以提高业务处理性能。######楼主你好,请问这个问题解决了吗?我先在也是遇到了这问题。######单机环境调优讲一种方法吧。 1. 明确你的优化目标(优化是永无止境的,但必须适可而止) 2. 分析你的硬件瓶颈(归根到底,还是你的硬件在执行软件代码), 比如你的核,内存,带宽(本例中注意下你的带宽拥挤是否延迟你的消息返回) 3. 根据你的目标调整Netty的BoosEventLoop, WorkEvnetLoop,Buffer大小。 4. 优化你的消息包,尽量在一个MTU大小,优化你的编解码工具类,比如使用Protobuffer(传输小,解码快)代替Json.  另外,特别注意Bytebuf转Message后,是否有被ReferenceCountUtil.release() 5. 消息的返回注意 chanel的write跟writeAndFlush的区别。一个是等缓冲区满了才返回,一个是立刻返回。 上面做完了,就跟netty没啥关系了。 针对你的 编解码Loop线程组 与 工作线程组 的优化 Netty WorkEvnetGroup = M,   BusinessWorkerGroup = N  ( M, N >1) 这种情况就是一个生产消费模型,M, N之间有一个ArrayBlockingQueue(必需限制上限)做消息缓存。 1. 为了减少锁竞争,可以使用 无锁队列 Disruptor代替 java的 ArrayBlockingQueue, 据说效率是后者的10倍 2.工作任务代码优化,可以全内存操作以及算法优化。######业务服务是否可以分析出单独微服务啊

java rmi 超时_java RMI服务超时相关推荐

  1. java web 教程_Java Web服务教程

    java web 教程 Welcome to the Java Web Services Tutorial. Here we will learn about web services, useful ...

  2. java 设置session超时_Java设置session超时(失效)的三种方式

    转自:http://blog.csdn.net/hu_shengyang/article/details/8021435 1.      在web容器中设置(此处以tomcat为例) 在tomcat- ...

  3. java socket 超时_Java Socket超时浅析

    套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条 ...

  4. Java服务超时保护_五、服务保护-Hystrix

    服务之间的调用,很有可能会遇到服务之间调用超时的情况,此时我们可以用到一个很好用的技术:Hystrix.具体可以了解我的该标签下得第二篇博文二.SpringCloud微服务架构, 一.背景 在一个分布 ...

  5. java wtc_java通过wtc调用tuxedo服务超时

    java通过wtc调用tuxedo返回 tperrno = 13 (TPETIME)超时错误 一开始通过调查找到一篇文章关于tuxedo的所有超时控制的,以为是ubbconfig的配置有问题,把BLO ...

  6. java远程代码注入_Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 )...

    原标题:Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 ) 本打算慢慢写出来的,但前几天发现国外有研究员发了一篇关于这个CVE的文章,他和我找到的地方很相似.然而不知 ...

  7. Druid获取连接超时,导致服务不可用

    前言 一个微服务模块在运行一段时间之后,整体服务就不可用了,但是服务却没有打印任何错误日志.而对服务进行重启之后,服务就可以暂时提供一段时间服务,过一段时间之后再次不可用. 分析 服务进行重启就可以正 ...

  8. java分布式对象(RMI+部署使用RMI的程序)

    [0]README 1)本文文字转自 core java volume 2, 旨在学习 java 分布式对象的相关知识: 2) RMI 的实例程序为原创: 3) RMI部署步骤的测试用例,参见 htt ...

  9. 【Java】RPC与RMI框架

    [Java]RPC与RMI框架 概念 RMI概念 RPC概念 RMI框架 接口方法及接口实现对象的注册及其方法的调用 RPCFactory RPCDefinition 注解Scanning 服务器端 ...

最新文章

  1. 吃惊!江苏抽查发现,144篇硕士学位论文不合格,部分单位将被约谈
  2. Face ID 上手体验信息汇总:面部解锁流畅,原理移植AR让人憧憬
  3. Java编程中“为了性能”需做的26件事(转)
  4. Mybatis动态的添加删除列
  5. 会计记忆总结之六:账务处理程序
  6. [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]
  7. Mybatis源码阅读(四):核心接口4.1——StatementHandler
  8. MySQL的crash-safe原理详解
  9. 史上最失败系统!微软正式终止对Vista支持
  10. reduce python3_Python3的高阶函数:map,reduce,filter
  11. 左右极限相等的matlab,如何求左右极限
  12. [史]世界史上的6大古帝国
  13. Unity 滚球游戏
  14. 【联机对战】一张图看懂联机对战服务
  15. sleep() 和 wait() 有什么区别
  16. high sierra php,macOS High Sierra 上测试 Apache 和 PHP 站点
  17. SQL:DBMS函数的差异(限制输出结果、拼接字段)
  18. tableau-表差异的计算
  19. mybatis-plus字典回写工具包
  20. 10名IB学生获得满分,新加坡环球印度国际学校成为一匹黑马

热门文章

  1. 无障碍开发(九)之tabindex属性
  2. T-SQL Recipes之Customized Database Objects
  3. 算法录 之 复杂度分析。
  4. 探索javascript----获得节点计算后样式
  5. Android version and Linux Kernel version
  6. EF 如何更新多对多关系的实体
  7. iOS进阶 - iOS如何监控崩溃
  8. Docker环境下Java应用的最大内存和堆内存的设置
  9. tr的display属性出现td的colspan无效问题
  10. javascript嵌套的对象被修改时log不符合的问题