代码之家  ›  专栏  ›  技术社区  ›  ealeon

Java:监听具有更多线程的单个端口与监听多个端口

  •  2
  • ealeon  · 技术社区  · 6 年前

    假设我有一个Java程序正在监听端口8001,正在消耗和处理消息
    一个程序在那个端口上处理的比特的吞吐量有理论上的最大值吗?ie您将一个线程专用于该端口,您可以通过添加更多线程来监听该端口来进行扩展?你能为那个端口分配多少线程有限制吗?

    现在,如果在某个特定端口上抛出更多的线程,在理论上确实存在一个最大值,那么让程序监听额外的端口8001和8002,并拥有2倍多的线程,可以克服这个问题吗?你的程序现在能提供两倍的请求吗?

    或者,端口vs端口上的这些吞吐量是由NIC限制的进入主机的位的吞吐量而非发出的?

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Mateusz Stefek    6 年前

    您可以在同一个套接字上任意多个并发连接(***)。您可以为每个连接分配一个线程,但请记住,在Java中,每个线程大约消耗2MB。

    既然我们讨论的是可伸缩性,添加线程并不会神奇地将内核添加到CPU中。

    (***)有一个理论上的限制,因为可能的ip地址数乘以可能的源端口数是有限的,但是在到达它之前,您将耗尽内存。