FTP. HTTP timeout

0

Witam,
notorycznie w aplikacji mamy problem, że ktoś zapomni ustawić timeout'u będąc klientem http,ftp i to prowadzi do wysycenia pul wątków, co w rezultacie prowadzi do niefunkcjonowania niektórych systemów aplikacji i wymagany jest restart...sytuacja nie dopuszczalna!!!

Myślimy nad rozwiązaniami:

  1. Instrumentacja klas z JDK w celu ustawienia domyślnych timeoutów np. 1h (lepsze to niż nieskończoność) tutaj problem bo jakie klasy dodatkowo większość jest finalna
  2. Może jakiś sonar lub checkstyle będą w stanie to wykryć

Jak wy sobie z tym radzicie...

0

Dla mnie rozwiązaniem jest posiadanie projektowego http clienta/wrappera, z którego się powinno korzystać i wykrywanie sonarem gdzie tego nie mamy.

Instrumentacja - fajna zabawa, używaliśmy w jednej firmie do podobnych problemów(monitoring, wykrywanie zawieszonych raportów itp.), ale... IMO za dużo pracy w utrzymaniu (zmiany w JDK).

Rozwiązanie inne - odpowiednio skonfigurowany HTTP Proxy na JVM.

0

Dla lubiących video
Również timeout tam jest omawiany

0

Muszę zobaczyć te HTTP Proxy chociaż boje się HTTPSżeby nie było problemu

0

Ale o jakich bibliotekach mówisz? Na standardową trzeba by było mieć jakiś zestaw wartości domyślnych java properties. Wśród nich byłoby:

sun.net.client.defaultReadTimeout: 30000

Wtedy zadanie sprowadza się do możliwości ustawienia domyślnych java properties. Można to zrobić przez zmienne środowiskowe.

0
Szczery napisał(a):

Jak wy sobie z tym radzicie...

Szczerze to zazwyczaj solidny oprl przy reszcie zespołu wystarcza :)

Tak już na serio, to jest to dla mnie typowy problem zaczynający się na najniższym poziomie - jednostki - który da się rozwiązać na poziomie:

  • zespołu (code review i wyłapywanie podobnych kwiatków)
  • projektu (odpowiednie zmienne środowiskowe)
  • infrastruktury (wspomniane przez @jarekr000000 HTTP Proxy)
    Każde z tych rozwiązań jest dobre w innych okolicznościach. Jeśli twój zespół jest mały i w jednym miejscu to nie ma sensu stawiać HTTP Proxy i utrzymywać tego, wystarczy się przejść i powiedzieć jasno i wyraźnie o timeoutach.

Widzę tutaj jeszcze jeden aspekt - piszesz o puli wątków. Może właśnie tam po prostu ustawić timeout, jeśli coś wisi odpowiednio długo to wątek jest ubijany?

0

Ludzkim rozwiązaniem jest dostarczenie klienta przez dany mikroserwis. Ty wystawiasz jakieśtam API, wiec ty zrób też do niego klienta!

1 użytkowników online, w tym zalogowanych: 0, gości: 1