问题标签 [so-reuseport]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 使用 SO_REUSEPORT 时,从同一客户端获取 UDP 数据包传递到同一服务器进程?
我正在编写一个多进程 UDP 服务器,它使用 SO_REUSEPORT 让多个工作进程在同一个端口上侦听。
有没有办法告诉内核我希望根据数据包的源地址将数据包一致地传递给进程?
(服务器需要为每个源地址保存一些状态。将状态置于进程本地会更容易,而不是必须在进程之间共享状态。)
python - so_reuseport下如何连接特定的grpc服务器进程
我有多个 GRPC 服务器,都使用 GRPC linux so_reuseport选项绑定到同一个端口。
这很好用,但对于健康检查,我想在所有服务器上逐一迭代并识别不健康的服务器。
因为它们都具有相同的 ip 和端口,我无法控制它将连接到谁。
任何解决方法?
netty - 带有 setReuseAddress(true) 的 gRPC Java 服务器?
我正在开发一个用 Java 编写的 gRPC 服务器。它用于NettyServerBuilder
启动/运行服务器。我想知道如何setReuseAddress(true)
为服务器设置,以便它可以快速重启(在崩溃或维护重启时。)
这是当前的启动:
linux - SO_REUSEPORT 和同一线程中的多个侦听器
背景参考...
https://lwn.net/Articles/542629/
https://blog.n0p.me/2018/02/2018-02-20-portsharding/
我很好奇这个功能在同一个线程上与多个监听器的性能如何?
例如,假设我的服务器强制限制 100 个连接。使用像 ASIO 这样的框架,它是否可以简单地创建一个包含 100 个连接对象的池,每个对象都异步侦听,直到它接受一个连接?这真的更像是拥有 100 台单连接服务器。
同一线程上的多个侦听器是否会比单个侦听器具有相同或更差的性能?
[编辑] 我认为听积压可能是一个问题。即使 backlog 设置为一个,第二个连接也可以在第一个连接被接受后立即排队,并且关闭端口可能会 RST 连接而不是将其迁移到另一个侦听 backlog。
java - 如何在同一本地/src 地址上创建多个 UDP 数据报通道/流
我必须从服务器同一端口上的差异客户端接收数据。为此,我想为每个客户端创建单独的通道并接收每个客户端的数据。
我正在探索所有可用于设计它的选项。
选项 1:侦听单个套接字并处理来自各种设备的数据。
选项 2:在相同的 src 地址(在服务器中)上创建多个具有不同远程地址(客户端)的通道,并使用 NIO 选择器来处理这些通道上的数据。
选项 1 似乎有点冒险,因为远程设备数量众多。而且我似乎无法实现选项 2。即使在绑定通道之前使用 setReuseAddress() API,我也会遇到绑定异常。
有人能帮我一下吗?或者如果有更好的方法来设计这个。我已经探索了有关 stackoverflow 的其他问题,但我仍然无法正确理解它是否可行。
nsnetservice - 如何配置 NSNetService SO_REUSEPORT 和 SO_REUSEADDR
在我当前的项目中,我需要发布一个NSNetService
来宣传我的设备地址和端口号。当其他设备得到我的地址和端口时,它们会向我的设备发出一个带有广告地址和端口的 http 请求,所以我需要启动一个与NSNetService
.
当我启动一个 http 服务器时,我遇到了一个48: Address already in use
问题。我知道setsockopt
有参数SO_REUSEPORT
,SO_REUSEADDR
可以解决这个问题,但是NSNetService
封装了套接字,我们不能直接配置套接字。那么我该如何解决呢?任何想法将不胜感激。
c++ - SO_REUSEADDR 对服务器有意义吗?
我正在使用两个使用 UDP 套接字的二进制文件。进程 A 在 UDP 套接字 (IP_1:PORT_1) 上等待消息select()
,进程 B 最终通过 UDP 套接字发送。
由于一些超出范围的限制,进程 B 需要通过 (IP_1:PORT_1) 上的套接字发送。由于这两个进程的 IP:PORT 对相同,因此无法使用bind()
. 我试过了SO_REUSEADDR
,但我想知道重用 IP:PORTSO_REUSEADDR
用于发送和接收是否有意义,或者这个选项只是为了监听套接字而构思的?
过程A
工艺 B