|
|
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
Архитектура такая: Есть Web-сервер на Tomcat который должен принять запрос от клиента (назовем gui1), потом по RMI он обращается к другой JVM (назовем Host) которая подготавливает данные и возвращает их Web-серверу, который форматирует HTML. Сейчас все стоит на одной бесплатной машине в Amazon EC2, в дальнейшем, будет на разных машинах. Обращение происходить по Временному IP instance Amazon машины. Периодически (достаточно часто((( ), в логах Tomcat такая бяка: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В логах на стороне RMI-host'а - все чисто. Стоит отладочная печать тупо через System.out.println, все нормально. Вошли в метод, обработали, вернули результат. А tomcat при unmarshaling результата почему-то на пустом месте ловит EOF ((( Данных за один вызов сейчас передается достаточно много (оценочно около 2 Mb). Сереализация чисто стандартная, ничего в классах не переопределял (в классах только простые типы данных: String,int и массивы) Что это за фигня? Как ее лечить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 12:43 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
На stackoverflow полно толковых советов http://stackoverflow.com/questions/19214479/unable-to-connect-rmi-client-to-host-unmarshalexception-caused-by-eofexception http://stackoverflow.com/questions/16925808/java-rmi-connectexception-connection-refused-to-host-and-java-rmi-unmarshalexce http://stackoverflow.com/questions/1666028/java-rmi-server-tcp-connection-idle-client-unmarshalexception-eofexception Проверить наличие SecurityManager, посмотреть в -Djava.security.debug=access,failure. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 12:57 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
Так как ошибка отваливается в самом начале чтения, то запрос до сервера и не доходит. Обрубается кем-то по дороге. Надо разобраться кем именно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 12:59 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТак как ошибка отваливается в самом начале чтения, то запрос до сервера и не доходит. Обрубается кем-то по дороге. Надо разобраться кем именно. Откуда ощущение, что "в начале" и "не доходит" ? У меня ощущение, что доходит и отваливается "в конце", при попытке прочитать готовый результат (как минимум название ошибки UnmarshalException) BlazkowiczПроверить наличие SecurityManager, посмотреть в -Djava.security.debug=access,failure. Нафига? Код примерно такой: Код: java 1. 2. 3. 4. 5. Цикл начинается, обрабатывает первые N запросов, на каком-то ИНОГДА падает. В следующий (предыдущий) раз - все нормально (на тех же параметрах). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 13:09 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
Пока, кроме как: ловить ошибку и самому перепосылать запрос, ничего в голову не приходить. Но это как-то совсем топорно выглядит ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 13:11 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevОткуда ощущение, что "в начале" и "не доходит" ? По стеку. Начинается запуск метода. В executeCall у connection берется InputStream и начинается чтение заголовка. Но stream с ходу возвращает отрицательное значение - индикатор конца. Leonid KudryavtsevУ меня ощущение, что доходит и отваливается "в конце", при попытке прочитать готовый результат (как минимум название ошибки UnmarshalException) Посмотри StreamRemoteCall.executeCall http://www.docjar.com/html/api/sun/rmi/transport/StreamRemoteCall.java.html Leonid KudryavtsevКод примерно такой: Код: java 1. 2. 3. 4. 5. Цикл начинается, обрабатывает первые N запросов, на каком-то ИНОГДА падает. В следующий (предыдущий) раз - все нормально (на тех же параметрах). host шарится между потоками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 13:51 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
Blazkowiczhost шарится между потоками? На стороне клиента - нет На стороне сервера, клиенты сейчас "прицеплены" к одному объекту. Т.ч., теоретически, в момент обращения, он может быть в synchronized блоке и не отвечать. Но здесь мне не понятно, как в RMI такие вещи нужно делать корректно. Т.е. я планирую в RMI выдать во внешний мир фабрику, а дальше каждый клиент через нее будет получать "свой" объект. Понятно, что время "занятости" уменьшится и, если ошибка связана с коллизиями, вероятность словить ошибку также уменьшится, но ведь не исчезнет совсем. Все равно, остается не нулевая вероятность обращения в один момент к самой фабрике. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 14:07 |
|
||
|
RMI ошибка на Amazon EC2
|
|||
|---|---|---|---|
|
#18+
На стороне сервера вроде то же все законно ((( Сама ф-ция блоков synchronized вообще не содержит, т.к. вроде реетерабельна (все переменные локальные): 1) создает и запускает поток обработки, передавая туда принятые параметры; 2) ждет завершения потока; 3) выходит из функции На стороне сервера ошибок нет, ошибка только на клиенте (Tomcat) иногда появляется. Сервер не подвисает. Последующие запросы/обращения идут нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2015, 16:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39136007&tid=2124526]: |
0ms |
get settings: |
4ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 467ms |

| 0 / 0 |
