Есть ли способ ввести ложную задержку в вызовах Java RMI? - PullRequest
4 голосов
/ 19 июля 2011

Я хочу диагностировать узкое место, которое возникает, когда мой клиент разговаривает с сервером на другом конце света. Я хотел бы запустить сервер на моей локальной машине и смоделировать задержку. Есть ли способ, которым я могу ввести краткий спящий поток в всех удаленных вызовах? Я не уверен, какой удаленный вызов является узким местом, поэтому мне нужно отложить их все.

Вторая попытка уточнить: Я не хочу копировать-вставлять потоки спит в каждый удаленный метод, потому что есть много и много удаленных методов. Я пытаюсь найти способ внедрить спящий режим в подсистему RMI, чтобы все вызовы через RMI были задержаны.

Ответы [ 5 ]

7 голосов
/ 19 июля 2011

WANem предназначен именно для этого. Он работает на сетевом уровне, поэтому не зависит от Java или RMI.

1 голос
/ 19 июля 2011

Прокси-сервер Charles имеет функцию, позволяющую добавлять удушение / задержку к соединению:

http://www.charlesproxy.com/documentation/proxying/throttling/

Я был очень доволен Чарльзом - стоит $ 50 за лицензию.

0 голосов
/ 20 января 2015

Задержка может быть введена путем внедрения и внедрения вашего собственного RMISocketFactory с помощью вызова setSocketFactory .

0 голосов
/ 20 июля 2011

Для Windows существует приложение под названием SoftPerfect Connection Emulator.Имитирует задержку и, если необходимо, потери или ограничение полосы пропускания.Смотри http://www.softperfect.com/products/connectionemulator/

0 голосов
/ 19 июля 2011

Можете ли вы написать прокси-сервер? Клиент общается с прокси-сервером, тот же самый метод вызывает сервер. Таким образом, вы переконфигурируете клиента, но вам не нужно менять код. Прокси-сервер может добавлять задержки и регистрировать звонки и ответы.

...