Как изменить размер журнала ожидания RMI Listen? - PullRequest
0 голосов
/ 19 февраля 2020

У меня проблемы с сетью с моим Java (7) приложением на linux, где пакеты иногда задерживаются.

Сисадмины сказали, что набор невыполненных заданий прослушивания слишком мал и, следовательно, не принимает соединения достаточно быстрые.

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

Является ли значение 50 по умолчанию для подключений RMI в JDK7?

Как увеличить его заставить его использовать систему по умолчанию?

1 Ответ

0 голосов
/ 21 февраля 2020

Похоже, что 50 является значением по умолчанию в JDK.

sun.rmi.transport.tcp.TCPEndpoint вызывает RMIServerSocketFactory.createServerSocket(this.listenPort); Реализации RMIServerSocketFactory например RMIDirectSocketFactory do new ServerSocket(int);

Как видно из javadocs ServerSocket: https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#ServerSocket (int)

Максимальная длина очереди для индикации входящих соединений (запрос на соединение) установлена до 50

Таким образом, один из способов увеличить значение - создать собственную реализацию RMIServerSocketFactory и вызвать другой конструктор ServerSocket, который позволит вам установить собственное значение невыполненной работы.

...