Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Linux RMI registry lookup слишком долгий отклик / 3 сообщений из 3, страница 1 из 1
26.03.2012, 17:44:23
    #37723707
o.vedernikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linux RMI registry lookup слишком долгий отклик
Подскажите может кто-то сталкивался:

1. Сервер на Linux (дистрибутив Ubuntu 8.04 или SuSe 11 ES) RMI запущен так

public static void start() throws RemoteException, MalformedURLException, UnknownHostException{
System.setProperty("java.rmi.server.codebase","file:/" + APISConstants.PATH_HOME + APISConstants.PATH_LIB + "/");

if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());

APISConstants.RMI_HOST = APISUtils.getStrIP();
System.setProperty("java.rmi.server.hostname", APISConstants.RMI_HOST);
System.setProperty("java.rmi.server.logCalls", "true");
APISLog log = new APISLog(APISConstants.APPLICATION);
try{
registry = new APISImplRegistry(APISConstants.RMI_PORT);
log.info(String.format("RMI registry obtained on %s:%d",APISConstants.RMI_HOST,APISConstants.RMI_PORT));

APISServer apis = new APISImplServer();
registry.bind(APISConstants.RMI_NAME, apis);
}catch(Exception e){
log.fatal(e);
System.exit(1);
}


}

Своя реализация APISImplRegistry (с правом встраивать обекты из других машин) всё остальное стандартное
метод lookup APISImplRegistry:

public Remote lookup(String name) throws RemoteException, NotBoundException {
synchronized (bindings) {
Remote obj = (Remote) bindings.get(name);
if (obj == null)
throw new NotBoundException(name);
return obj;
}

}

2. Вызов на клиенте
APISServer apis = (APISServer)APISUtils.lookup(String.format("rmi://%s:%d/%s", APISConstants.RMI_HOST, APISConstants.RMI_PORT, APISConstants.RMI_NAME));

3. Собственно проблема: в той же сети win<->win работает отлично win<->linux (сервер Linux) отклик ровно 50 сек.
может какие-то настройки RMI подскажите кто сталкивался и решил.
...
Рейтинг: 0 / 0
26.03.2012, 18:04:21
    #37723773
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linux RMI registry lookup слишком долгий отклик
Может он на прямую не может законнектится и поэтому начинает срабатывать туннелирование?
http://www.cs.swan.ac.uk/~csneal/InternetComputing/Tunnelling.html
Где-то в официальной доке тоже есть. Надо поискать.
RMI пытается законектится через свой порт напрямую. Если соединение не доступно (а оно например 30 секунд тупит и потом отваливается по таймауту), то RMI пробует другой способ. Отсюда задержка.
...
Рейтинг: 0 / 0
26.03.2012, 18:17:02
    #37723811
o.vedernikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Linux RMI registry lookup слишком долгий отклик
Blazkowicz,

Клиент находит сервер очень быстро (см. лог) а вот сервер клиента что бы ответить ровно 50 сек.
То есть ответ где то ждёт.


STATUS | wrapper | 2012/03/26 11:32:29 | Launching a JVM...
INFO | jvm 1 | 2012/03/26 11:32:30 | WrapperManager: Initializing...
INFO | jvm 1 | 2012/03/26 11:32:30 | [INFO] apis - RMI registry obtained on 192.168.1.2:1098
INFO | jvm 1 | 2012/03/26 11:32:53 | 26 бер 2012 11:32:53 sun.rmi.server.UnicastServerRef logCall
INFO | jvm 1 | 2012/03/26 11:32:53 | FINER: RMI TCP Connection(1)-192.168.1.71: [192.168.1.71: apis.APISImplRegistry[0:0:0, 0]: public abstract java.rmi.Remote java.rmi.registry.Registry.lookup(java.lang.String) throws java.rmi.RemoteException,java.rmi.NotBoundException,java.rmi.AccessException]
INFO | jvm 1 | 2012/03/26 11:32:53 | lookup started: Mon Mar 26 11:32:53 EEST 2012
INFO | jvm 1 | 2012/03/26 11:32:53 | lookup finished: Mon Mar 26 11:32:53 EEST 2012

INFO | jvm 1 | 2012/03/26 11:33:43 | 26 бер 2012 11:33:43 sun.rmi.server.UnicastServerRef logCall
INFO | jvm 1 | 2012/03/26 11:33:43 | FINER: RMI TCP Connection(2)-192.168.1.71: [192.168.1.71: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]
INFO | jvm 1 | 2012/03/26 11:33:43 | 26 бер 2012 11:33:43 sun.rmi.server.UnicastServerRef logCall
INFO | jvm 1 | 2012/03/26 11:33:43 | FINER: RMI TCP Connection(2)-192.168.1.71: [192.168.1.71: apis.APISImplServer[-6396300d:1364e22920b:-7fff, 6902898549710500761]: public abstract java.lang.String[] apis.rmi.APISServer.libs() throws java.rmi.RemoteException]
INFO | jvm 1 | 2012/03/26 11:33:43 | 26 бер 2012 11:33:43 sun.rmi.server.UnicastServerRef logCall
INFO | jvm 1 | 2012/03/26 11:33:43 | FINER: RMI TCP Connection(2)-192.168.1.71: [192.168.1.71: apis.APISImplServer[-6396300d:1364e22920b:-7fff, 6902898549710500761]: public abstract apis.rmi.APISSession apis.rmi.APISServer.session(apis.rmi.APISClient) throws java.rmi.RemoteException]
INFO | jvm 1 | 2012/03/26 11:33:44 | [INFO] mpp - Session opened: apis.mpp.f9b1c0abd8:o.vedernikov@192.168.1.71
INFO
| jvm 1 | 2012/03/26 11:33:44 | 26 бер 2012 11:33:44 sun.rmi.server.UnicastServerRef logCall
INFO | jvm 1 | 2012/03/26 11:33:44 | FINER: RMI TCP Connection(2)-192.168.1.71: [192.168.1.71: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]
INFO | jvm 1 | 2012/03/26 11:33:44 | 26 бер 2012 11:33:44 sun.rmi.server.UnicastServerRef logCall
INFO | jvm 1 | 2012/03/26 11:33:44 | FINER: RMI TCP Connection(2)-192.168.1.71: [192.168.1.71: apis.APISImplSession[-6396300d:1364e22920b:-7ffa, -8386257324399966464]: public abstract apis.APISConfig apis.rmi.APISSession.config() throws java.rmi.RemoteException]
INFO | jvm 1 | 2012/03/26 11:33:44 | 26 бер 2012 11:33:44 sun.rmi.server.UnicastServerRef logCall

Что значит:

Connection(1)-192.168.1.71 (192.168.1.71 это клиент)
а потом все вызовы
Connection(2)-192.168.1.71
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Linux RMI registry lookup слишком долгий отклик / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]