当前位置: 首页 > 知识库问答 >
问题:

Netty客户端保活=true

乐正心思
2023-03-14

我对如何处理网络中的大量连接感到困惑(3.6.2。FINAL)和保持活着=true。

对于作为服务器端连接器在netty客户机上工作,对另一个服务进行http调用,它希望始终保持连接打开以获得性能(keep alive=true)。

问题:开放频道的数量有一个硬限制,超过这个限制,客户端在尝试打开频道时将挂起。为什么没有例外只是挂起?这是通道超时的设置吗?

我似乎无法理解Netty对工作线程内连接的全面管理:

>

处理程序可以接收ChannelEvent,但不能接收连接池中可用的总计数(无论如何,它是非常不确定的)。如果通道未打开,那么处理程序在工作线程中运行时启动打开新通道是否有意义?

共有1个答案

华懿轩
2023-03-14

我必须彻底撕开我的处理程序,才能让客户端在不挂断的情况下阻止呼叫。这个问题主要是通过在处理程序中不保留本地通道ref来解决的。

现在,我们只需将ConnectionInterface#openConnection()[返回新的ChannelFuture]传递到共享自定义ChannelHandler调用(ConnectionInterface ConnectionInterface,HttpRequest请求)中。

最好在处理程序调用方法中打开通道,并在通道之前传递该通道以及对其状态的检查。写(x),如果!频道isWritable()然后回收通道(从新的客户端连接,例如ConnectionInterface#openConnection()),然后重试写入。甚至不需要关闭通道(它在池中处理)。

只运行了500个线程/5000个请求,就成功了。

 类似资料:
  • 在Netty中创建客户端连接时,我有一个问题。 这里,为什么我们没有一个bind方法,将通道绑定到发起客户端连接的端口(在客户端)?我们唯一需要提供的就是给出服务器地址和端口如下: 这是在客户端还是服务器端创建了一个新的通道?此通道绑定在客户端的哪个端口? 我们在执行服务器端引导时进行绑定,如下所示 我很困惑,不明白客户端从哪个端口向服务器发送数据,使用的是什么通道?

  • 我需要让客户能够建立许多连接。我使用Netty 4.0。不幸的是,所有现有的示例都没有显示如何创建大量连接。 这是正确的决定吗?还是会更好?

  • 我正在努力与Netty 4.0.8网络套接字客户端示例和SSL,我似乎无法将数据发送到Netty SSL网络套接字服务器示例。尽管围绕这个问题已经有很多帖子了,(我相信我已经浏览了所有的帖子),最常见的建议是在管道的开头添加一个sslHandler,但它不起作用。握手似乎是成功的,因为它也表明了一个相关的问题在这里。 我记得4.0版的情况也一样。0,但我还是设法让它工作了。然而,当我升级到4.0时

  • 我刚刚把我的Netty 3软件转换成5,我遇到了一个问题。只有一个客户,一切都很好。我可以使用两个解码器(它们可以正常切换)并允许我登录。 当我尝试连接另一个客户端时,无论第一个客户端是否仍然连接,都会出现问题。第一个客户端保持连接绝对正常,但第二个客户端根本无法连接(不通过第一个解码器)。 这是我的引导程序: 第一解码器: http://pastebin.com/9FWzXSVE 第二个解码器:

  • 有什么特殊的配置需要保持TwilioiOS客户端在后台活动吗?我已经启用了“VoIP”和“音频”权限,但是我注意到我的应用在后台大约10分钟后就退出了。请注意,我已经禁用了“TCDevice”播放的声音,并且还对AVAudio会话配置进行了一些更改。

  • 我试图理解netty http客户端连接池。如果是NIO和异步的,那么这个连接池的意义是什么? 例如:如果服务A调用服务B,并且服务A的客户端连接池计数设置为50,那么这是否意味着我们最多只能发出50个并行请求? 更新: 我在3.5秒内完成了所有通话。理想情况下,有一个连接,我应该在150秒内完成。