【问题标题】:Netty Channel configuration for connection timeout & number of open connections用于连接超时和打开连接数的 Netty 通道配置
【发布时间】:2014-04-15 08:39:36
【问题描述】:

我正在尝试使用 netty 实现 HTTP 服务器,并且我想知道一些我无法从 netty api 中理解的事情。我阅读了许多其他与 netty 相关的 stackoverflow 问题,但我仍然无法理解。

1.如果我希望客户端的连接在一段时间内打开,我应该使用什么 CONNECT_TIMEOUT_MILLIS 或添加读取超时处理程序并在其中添加超时。基本上我想了解这两者之间的区别。 & CONNECT_TIMEOUT_MILLIS 的默认值是多少。

  1. 什么是 SO_BACKLOG 的默认值,我在其中之一中读取它等于 io.netty.netUtils 中的 SOMAXCONN。但它的值是多少。另外,我想确定 so_backlog 限制了工作线程 ri8 的数量?我的意思是,如果我将其设置为 1000,则意味着 netty 一次不允许打开超过 1000 个连接。

  2. 有人能解释一下 netty 如何响应 HTTP 请求,就像在内部从通道中写入和读取一样吗?

提前致谢!!!

【问题讨论】:

    标签: java netty connection-timeout


    【解决方案1】:

    CONNECT_TIMEOUT_MILLIS 是连接尝试的超时时间。一旦建立连接,它就没有任何作用。你感兴趣的是ReadTimeoutHandler

    默认SO_BACKLOGNetUtils.SOMAXCONN。它不限制工作线程的数量。有关SO_BACKLOG 的更多信息,请参阅this question。要限制工作线程的数量,您必须在构造NioEventLoop 时指定它。 SO_BACKLOG 也与最大并发连接数无关。

    Re: HTTP 如何在 Netty 中工作 - 这个问题太宽泛,无法给出简单的答案。请使用您的调试器进入 Netty 内部,了解我们的工作原理。

    【讨论】:

    • 感谢您的回复。那么我应该用什么来限制连接到我的服务器的并发客户端的数量。早些时候我认为如果我限制工作线程的数量,我 mi8 可以控制并发连接的数量,但因为你说情况并非如此。你能建议一种方法来限制最大并发连接数吗
    • 我会评论说 SOMAXCONN 是一个选择不当的默认值。它保证了最大的资源利用率,它应该使用平台默认值或 Java,两者都是更明智的选择。
    猜你喜欢
    • 2019-05-04
    • 2015-12-20
    • 2012-02-15
    • 1970-01-01
    • 2014-07-24
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多