如何更改 RMI 侦听积压大小?

How Do I Change The RMI Listen Backlog Size?

我在 linux 上的 Java (7) 应用程序出现网络问题,数据包偶尔会延迟。

系统管理员表示监听积压集太低,因此接受连接的速度不够快。

ss -lt
State      Recv-Q Send-Q    Local Address:Port    Peer Address:Port
LISTEN     0      50        *:1099                *:*

本系统默认为 128

sysctl -a 2>/dev/null|grep net.core.somaxconn
net.core.somaxconn = 128

JDK7 中 RMI 连接的默认值是 50 吗?

如何增加它以使其使用系统默认值?

看起来 50 JDK 中的默认值。

sun.rmi.transport.tcp.TCPEndpoint 调用 RMIServerSocketFactory.createServerSocket(this.listenPort); RMIServerSocketFactory 的实现,例如RMIDirectSocketFactorynew ServerSocket(int);

正如我们从 ServerSocket javadocs 中看到的那样: https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#ServerSocket(int)

The maximum queue length for incoming connection indications (a request to connect) is set to 50

因此,增加值的一种方法是创建您自己的 RMIServerSocketFactory 实现并调用不同的 ServerSocket 构造函数以允许您设置自己的积压值。