Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > HTTP post


Автор: sergioK1 19.8.2015, 10:53
Всем привет, нужна подсказка,
Итак есть сервер всем известный Tomcat , к нему конектяться каждые 1,5 секунды,
разные андроиды пока их не больше 10, потом может быть больше, шлют 
обычный post,на сервере стоит spring-controller и принимает эти посты , получив данные 
он создает файлы размер не больше 25-30K . для каждого клиента своя папка,
все идет нормально , но раз в какое то время клиент начинает выдвать socket timeout.
В этом случае он кладеться в очередь в в следубщем цикле через 1,5секунды 
снова шлет данные на сервер, я постваил timeout на 1000мили , но иногда клиент
после трез четырех попыток , все равно "проваливает" post.Я это виже в логах клиента, Cобсвенно главный вопрос ,
в чем пичина сбоя? что не так со связью?  есть что-то в настройках сети , из за которых 
она "устает"  причем совершенно спонтанно , куда копать?  у кого какие мысли имеються ? 

Автор: AntonSaburov 19.8.2015, 14:35
Тут вариантов может быть несколько:
1. Проблема при создании файла
2. Ограничение на количество открытых соектов
3. Сетевые проблемы

Каждый надо смотреть отдельно. Я бы для начала выключил запись в файл и нагрузил Томкат большим количеством запросов в течении длительного времени - минут на 30-40.

Автор: sergioK1 19.8.2015, 15:57
Цитата(AntonSaburov @ 19.8.2015,  13:35)
Тут вариантов может быть несколько:
1. Проблема при создании файла
2. Ограничение на количество открытых соектов
3. Сетевые проблемы

Каждый надо смотреть отдельно. Я бы для начала выключил запись в файл и нагрузил Томкат большим количеством запросов в течении длительного времени - минут на 30-40.

1. Проблемы с созданием файла нет , тестили, если вдруг она бы появилась , то лог томката
сказал бы, 

тест  сделаю , пока начальсво другими задачами грузит smile 

2, Ограничение на количество открытых сокетов, на клиенте или сервере?  кто это ограничение ставит ? 
хотя   я откытый connection не держу у меня он каждый раз закрыветься,
утечек нет , может есть тулза проверить ? 

3, Сетевые проблемы ,  а что конкретно ? 

Автор: AntonSaburov 20.8.2015, 10:08
1. Значит пока можно убрать
2. На сервере конечно. На том же Linux это можно прописать в конфигах и количество может быть просто крошечным - про Винлду не знаю, но подозреваю, что такое тоже возможно.
3. Например пакеты "зависают" на каком-нибудь маршрутизаторе. В этом случае может оказаться, что даже TCP-конект не утановить.

Автор: sergioK1 21.8.2015, 18:49
Цитата(AntonSaburov @ 20.8.2015,  09:08)
1. Значит пока можно убрать
2. На сервере конечно. На том же Linux это можно прописать в конфигах и количество может быть просто крошечным - про Винлду не знаю, но подозреваю, что такое тоже возможно.
3. Например пакеты "зависают" на каком-нибудь маршрутизаторе. В этом случае может оказаться, что даже TCP-конект не утановить.

Ларчик открылся, виснит когда на SIM квота заканчиваеться, добрый провайдер 
не отключает трафик, а дает его очень медленным, но иногда возникае ситтуация 
когда сервер сделал все что нужно, а результат все равно socket time out exception .
Что тут можно сделать ?  

Автор: LSD 21.8.2015, 21:24
Цитата(sergioK1 @  21.8.2015,  19:49 Найти цитируемый пост)
Что тут можно сделать ?

Поменять тариф.

Что мешает поставить таймаут больше 1000 милисекунд?

Автор: sergioK1 23.8.2015, 22:01
Цитата(LSD @ 21.8.2015,  20:24)
Поменять тариф.

Что мешает поставить таймаут больше 1000 милисекунд?

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

Код

2-Aug-2015 00:08:11.578 WARNING [http-apr-8080-exec-352] org.apache.catalina.realm.LockOutRealm.authenticate An attempt was made to authenticate the locked user "admin"
22-Aug-2015 00:08:12.141 WARNING [http-apr-8080-exec-348] org.apache.catalina.realm.LockOutRealm.authenticate An attempt was made to authenticate the locked user "admin"
22-Aug-2015 00:08:12.609 WARNING [http-apr-8080-exec-351] org.apache.catalina.realm.LockOutRealm.authenticate An attempt was made to authenticate the locked user "admin"
22-Aug-2015 00:08:13.000 WARNING [http-apr-8080-exec-290] org.apache.catalina.realm.LockOutRealm.authenticate An attempt was made to authenticate the locked user "admin"
22-Aug-2015 00:08:13.391 WARNING [http-apr-8080-exec-295] org.apache.catalina.realm.LockOutRealm.authenticate An attempt was made to authenticate the locked user "admin"



Пока сервер работает без логина, юзер admin нигде не прописан , единсвенное место где есть юзер  это файл users.xml с ролью gui (чтобы war загружать),  что тут сервер не устраивает ? И почему он вспоминает оюб этом только после двух дней работы а не сразу? 
В гугле искал еичего внятного не нашел . 

Автор: CPlusPlusFAN 2.9.2015, 01:42
Цитата(sergioK1 @  23.8.2015,  22:01 Найти цитируемый пост)
Пока сервер работает без логина, юзер admin нигде не прописан , единсвенное место где есть юзер  это файл users.xml с ролью gui (чтобы war загружать),  что тут сервер не устраивает ? И почему он вспоминает оюб этом только после двух дней работы а не сразу? 
В гугле искал еичего внятного не нашел .  

Мне понравилась вот эта ссылка http://stackoverflow.com/questions/17361721/tomcat-hack-attempt-attempt-was-made-to-authenticate-the-locked-user

Автор: Samotnik 2.9.2015, 23:54
sergioK1, поставь везде логи и смотри, где начнет тупить.
Цитата(LSD @  21.8.2015,  21:24 Найти цитируемый пост)
Что мешает поставить таймаут больше 1000 милисекунд? 

Ну это не глубинное решение проблемы, согласись. smile Если приложение изначально высоконагруженное, то да, это панацея. Но если прилага работает с 10 девайсами и иногда начинает выдавать ошибки соединения, то я бы сперва разобрался в чем именно дело, какой кусок так долго отрабатывает. И потом да, возможно просто бы увеличил время таймаута, но это было бы осознанно.

Автор: LSD 3.9.2015, 13:26
Цитата(Samotnik @  3.9.2015,  00:54 Найти цитируемый пост)
Ну это не глубинное решение проблемы, согласись.  Если приложение изначально высоконагруженное, то да, это панацея. Но если прилага работает с 10 девайсами и иногда начинает выдавать ошибки соединения, то я бы сперва разобрался в чем именно дело, какой кусок так долго отрабатывает. И потом да, возможно просто бы увеличил время таймаута, но это было бы осознанно. 

При чем тут это? Там таймаут на клиенте из-за медленного канала, из-за того что кончился трафик на "безлимитном" тарифе.

Автор: Samotnik 3.9.2015, 13:34
LSD, не все сообщения прочитал, отвечал на первые два)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)