如何更改 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
的实现,例如RMIDirectSocketFactory
做
new 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
构造函数以允许您设置自己的积压值。
我在 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
的实现,例如RMIDirectSocketFactory
做
new 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
构造函数以允许您设置自己的积压值。