Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Таймаут для HTTPUrlConnection / 19 сообщений из 19, страница 1 из 1
13.06.2017, 17:56
    #39471096
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Всем привет! Подскажите пожалуйста как правильно организовать "Heart beat" между клиентом и сервером?

Структура приложения такая:
HttpUrlconnection -> proxy (таймаут бездействия 1 мин)->tomcat

если обработка клиентского запроса выполняется дольше 1 минуты соединение закрывается, потому, что в течении 1 минуты по этому соединению не идут данные.

как решить эту проблему? ответ напрашивается сам собой - отправить данные по соединению, но как это сделать правильно не изобретая велосипед (как я люблю).
Можно сделать отдельный Thread для обработки каждого request на стороне tomcat но это лишние ресурсы тратить которые не хочется.

HttpurlConnection можно заменить на HTTPClient от apache если это решит проблему.
...
Рейтинг: 0 / 0
13.06.2017, 19:04
    #39471126
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Mandarinкак решить эту проблему?
а где проблема? Коннект и должен закрываться.
Распишите свою проблему эдак на страничку формата A4.
...
Рейтинг: 0 / 0
13.06.2017, 22:12
    #39471182
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Petro123,

проблема в том что не должен коннект закрываться до тех пор пока сервер не ответит.
...
Рейтинг: 0 / 0
14.06.2017, 00:03
    #39471206
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Mandarin,
бери другой протокол, который не закрывается и держи соединение хоть 8 часов рабочего времени.
...
Рейтинг: 0 / 0
14.06.2017, 00:37
    #39471211
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Petro123,

какой на пример?
...
Рейтинг: 0 / 0
14.06.2017, 07:16
    #39471228
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Так понимаю это проблема прокси и ява тут не причем? Если какой-нибудь nginx, то

Код: plaintext
1.
2.
3.
proxy_connect_timeout       300;
proxy_send_timeout          300;
proxy_read_timeout          300;
send_timeout                300;
...
Рейтинг: 0 / 0
14.06.2017, 08:49
    #39471264
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
MandarinPetro123,
какой на пример?
Выше же написано - описывай задачу.
Или только в прокси проблема?
...
Рейтинг: 0 / 0
14.06.2017, 08:56
    #39471269
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Petro123,

прокси это не проблема. прокси это задача которую надо решить, таймаут на прокси модно поставить любой, но это не выход потому что не безопасно. таймаут бездействия должен быть короткий. задачу надо решать программно. описываю задачу еще раз:
надо обмениваться данными между клиентом и сервером пока выполняется обработка запроса на сервере. обмен данными (pin pong или heartbeaet назвать модно примерно так) должен быть в том же соединении.
...
Рейтинг: 0 / 0
14.06.2017, 09:02
    #39471273
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Ну так что мешает?

Постоянно с сервера отсылайте клиенту прогресс выполнения. Когда операция завершится - результат.

println + flush )))
...
Рейтинг: 0 / 0
14.06.2017, 09:58
    #39471297
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Leonid KudryavtsevНу так что мешает?

Постоянно с сервера отсылайте клиенту прогресс выполнения. Когда операция завершится - результат.

println + flush )))

я именно так и делал, только однажды полученный и прочитанный InputStream больше не возвращает данные, надо отправлять запрос повторно.
...
Рейтинг: 0 / 0
14.06.2017, 10:05
    #39471299
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Mandarinтаймаут на прокси модно поставить любой, но это не выход потому что не безопасностранное понимание безопасности , websocket (к примеру) открывается однажды и держится пока провод цел, или одна из сторон не отключит. и нет никакой проблемы с безопасностью.
...
Рейтинг: 0 / 0
14.06.2017, 10:18
    #39471311
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
вадя,

опасность в том что при большом таймауте бездействия можно забить все порты и сервер перестанет отвечать
...
Рейтинг: 0 / 0
14.06.2017, 11:21
    #39471385
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
MandarinPetro123,

какой на пример?
ТСР, UDP, наследники на них.
...
Рейтинг: 0 / 0
14.06.2017, 11:24
    #39471391
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Для таких целей надо использовать соответствующие инструменты, а не городить свистелки-перделки. Возьми
JMX (под тот же Apache ActiveMQ, например, есть куча куда протоколов и коннекторов)
...
Рейтинг: 0 / 0
14.06.2017, 11:25
    #39471393
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
JMS*
...
Рейтинг: 0 / 0
14.06.2017, 11:25
    #39471394
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Mandarin,
Ping pong это значит каждую минуту слать запрос: Готово? Готово? ....
...
Рейтинг: 0 / 0
14.06.2017, 20:12
    #39471735
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
Mandarinопасность в том что при большом таймауте бездействия можно забить все порты и сервер перестанет отвечатьты это серьёзно? у тебя 60 000 подключений? 60 000 юзеров одновременно?
...
Рейтинг: 0 / 0
14.06.2017, 21:16
    #39471757
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
MandarinLeonid KudryavtsevНу так что мешает?

Постоянно с сервера отсылайте клиенту прогресс выполнения. Когда операция завершится - результат.

println + flush )))

я именно так и делал, только однажды полученный и прочитанный InputStream больше не возвращает данные, надо отправлять запрос повторно.
Это как так?
Как он может быть "прочитанный" если сервлет еще работу не завершил и соединение не закрыл.

Ну или действительно, на стороне сервера делать что-то типа пула Job'ов и соответственно инструменты (запросы, админка), что бы в этот пул ставить Job'и, получать их результат и контролировать работу.
...
Рейтинг: 0 / 0
14.06.2017, 21:36
    #39471767
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймаут для HTTPUrlConnection
MandarinСтруктура приложения такая:
HttpUrlconnection -> proxy (таймаут бездействия 1 мин)->tomcatПолезные рекомендации: HTTP Persistent Connections
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Таймаут для HTTPUrlConnection / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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