Spring Boot 2 i Spring Security, wolne ładowanie

Spring Boot 2 i Spring Security, wolne ładowanie
ST
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

Witam, mam dziwny problem, mam nowy projest w Spring Boot 2 i Spring Security i pierwsze ładowanie w przeglądarce zasuwa normalnie. Klikam i od razu widać stronę logowania, i mogę się logować do aplikacji, ale jak zrobie to 2gi raz to już muszę czekać kiilkanaście sekund na zobaczenie formularza logowania, wpisuje hasło login i znów muszę czekać kilka sekund na zalogowanie. Pomaga dopiero uruchomienie ponowne komputera, po którym i tak tylko pierwszy raz działa wszystko szybko. Co jest nie tak? Nie wyskakują żadne błędy, tylko trwa to strasznie długo, w przeglądarce tylko widać że czeka na localhost bardzo długo.

danek
  • Rejestracja:ponad 10 lat
  • Ostatnio:8 miesięcy
  • Lokalizacja:Poznań
  • Postów:797
0

W czym strona zrobiona? Zobacz tez może dla pewności w przeglądarce w zakładkach od sieci (narzędzia deweloperskie) czy tam coś nie siedzi.


Spring? Ja tam wole mieć kontrole nad kodem ᕙ(ꔢ)ᕗ
Haste - mała biblioteka do testów z czasem.
ST
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

Formularz jest w htmlu ale to bez znaczenia jest. Bo w sumie czekam nawet na 404 10 sekund, w developerskich nic nie ma, no procz 10 sekundowego GETa przez którego tyle czekam. Na razie nie mam żadnych stron, chciałem sprawdzić kontrolery czy wczystko jest ok i wszystko jest ok ale po około 10 sekundach...

danek
  • Rejestracja:ponad 10 lat
  • Ostatnio:8 miesięcy
  • Lokalizacja:Poznań
  • Postów:797
0

To jeszcze wstaw jakiś kod jaki masz to będzie łatwiej ;)


Spring? Ja tam wole mieć kontrole nad kodem ᕙ(ꔢ)ᕗ
Haste - mała biblioteka do testów z czasem.
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:2 dni
  • Lokalizacja:Kraków
  • Postów:2000
0

A śledzisz, co się dzieje przy pierwszym, a co przy drugim wywołaniu w backendzie? Logujesz co tam ile trwa? Wrzuć kawałki kodu związane z logowaniem po stronie backendu, application.properties i takie tam, będzie łatwiej dojść do tego co tak przymula ;)


edytowany 2x, ostatnio: superdurszlak
ST
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

Właśnie nic sie nie dzieje, wszystko wygląda ok, bez błędów. T jest goła apka z prostym configiem security.

Kopiuj
public class SecurityConfig extends WebSecurityConfigurerAdapter {

	@Autowired
	   public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
	      auth
	         .inMemoryAuthentication()
	         .withUser("user").password("{noop}password").roles("USER");
	   }
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
           .authorizeRequests()
              .antMatchers("/", "/home").permitAll()
              .antMatchers("/admin/**").hasRole("ADMIN")
              .anyRequest().authenticated()
              .and()
           .formLogin()
              .permitAll()
              .and()
              .logout()
              .permitAll();
     }
     
    
}

w properties mam

Kopiuj
#Spring security

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration

Z tym że, zabrałem się za inny projekt w intellij idea bo miałem dość tego, wróciłem po godzinie do tego w eclipse i... działa... SZOK
A jutro może znów się zesra

KK
  • Rejestracja:prawie 17 lat
  • Ostatnio:20 dni
0

Na jakim hoście i porcie uruchamiasz aplikację? Sprawdź, czy inne usługi nie próbują wbić w ten port. Windows netstat -ano | findstr :8080, linux lsof -i :8080.


KE
Strzelam, ale powodem może też być jakaś dziwna konfiguracja ipv6 albo DNS.
ST
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

Różnie, bo 8080 mam zajęty, ten projekt akurat na 8085, ale to nie miało wpływu. Przy zmianie też były lagi

KK
A w momencie, kiedy muli, pingi na host idą szybko i bez lossów?
ST
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

Problem powrócił, zacząłem od nowa po przerwie tym razem goły spring boot projekt i działa i dodałem dependency spring security i znów zwiechy. Może ktoś mi z tym pomóc się uporać?
W załączniku zdjęcia z przeglądarek chrome i mozilla

KK
a spróbuj zostawić security w dependency, a na wszystkie endpointy dodaj permitAll(); i zobacz czy dalej są zwiechy
ST
Właśnie znalazłem rozwiązanie, zrobiłem nowy goły projekt w Spring Initializr i odpaliłem go na 2gim komputerze i odziwo działa jak powinien a na moim roboczym dalej nie działa. Dosłownie ten sam goły projekt z security na jednym kompie wyświelenie strony przykładowej i zalogowanie zajmuje ok 55 sekund - prawie minutę! a na 2gim kompie wszystko zajmuje niecałem 0,5 sekundy! Coś chyba mam z windowsem albo z kompem niestey, ale wcześniej nie miałem żadnych problemów. Nie wiem o co chodzi.
KK
Wyglada jakby jakieś locki na plikach były. Tylko dziwne, że bez security działa.
ST
Zauważam też, że to chyba najczęściej przy odwołaniach do statycznych pliów, ale już nie chce mi się z tym walczyć. Przeniosę wszystko na 2gi komputer
ST
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

UPDATE!!
Witajcie, znalazłem dokładny **zapalnik **tego problemu. Otóż jak na stronie user **najpierw **zaloguje się a potem zacznie przeglądać stronę to wszystko działa płynnie i bez opóźnień. ALE jak np bez zalogowania próbuje otworzyć stronę wymagającą zalogowanego usera to przekierowuje do formularza logowania (tak jak być powinno), z tym że po tej operacji już wszystko zaczyna działać wolno dopóki nie uruchomie komputera ponownie. Dziwne.
Może taki problem ktoś z Was miał?
Mimo wszystko chciałbym się dowiedzieć czemu tak się dzieje.
Mam nadzieję że jak wypchne projekt na amazona to nie będzie takich lagów

au7h
odwołania do plików które znajdują się w necie a chcesz je dołączać do swojej strony, np. czcionki od google'a, bootstrap, jquery, coś takiego lepiej pobrać samemu i dołączać razem z projektem niż dawać np script src="https://jakas-strona/jquery-3.4.1.min.js" bo to wszystko jest zależne od twojego łącza. Nie są to jakieś gigabajty ale zawsze coś :P
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

A ta strona jest http czy https? Bo tropiłem ostatnio ciekawego buga z autentykacją w Spring Security, który generalnie był triggerowany przez secure/not secure cookie.
W skrócie: jeśli wejdziesz na stronę przez https to wygeneruje ci się "secure" cookie. Ale takie cookie nie jest wysyłane przy requestach http, więc jak następnie user wchodził do aplikacji po http to cookie nie miał i szedł redirect to SSO a SSO zwracało nową sesję... I generalnie każda zmiana podstrony robiła taki round-trip do SSO.
Co więcej przy takim redirecie Spring Security w sesji trzyma informacje gdzie wrócić z redirecta autentykacyjnego, ale skoro sesja się zmieniała, to user nie miał gdzie wrócić :D

@Stang otwórz sobie zakładkę network w przeglądarce i zobacz co dokładnie się tam u ciebie dzieje.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 3x, ostatnio: Shalom
ST
localhost na http, no właśnie dziwna sprawa tylko dlaczego jak najpierw się zaloguje to śmiga później wszystko a jak nie to później ciągle laguje nawet jak jest już zalogowany
Shalom
No to otwórz ten network tab i zobacz, zamiast się zastanawiać. Przecież będziesz tam widział gdzie idą requesty i ile trwają.
ST
No właśnie widzę tylko że lecą gety na localhosta, zwiecha na 10 sekund i mam responsa
Shalom
No to jeśli nie pokażesz jakiegoś PoC to pozotaje nam tylko zgadywać ;]
YA
  • Rejestracja:około 10 lat
  • Ostatnio:około 13 godzin
  • Postów:2371
0

Jak rozumiem jesteś w stanie zreprodukować problem? Jeśli tak, to reprodukujesz i robisz zrzut wątków JVM i powinno być widać, na której ścieżce kodu wątek "wisi".

W JDK masz dwa toole, które Ci pomogą:

  • jps - listuje procesy javowe
  • jstack - robi zrzut procesu

Możesz zrobić tak:

  1. Odpalasz aplikację
  2. Sprawdzasz via jps jaki jest PID VM
  3. Przygotowujesz w konsoli polecenie: jstack <pid procesu>
  4. Reprodukujesz problem
  5. Szybko uruchamiasz jstacka
  6. Analizujesz zrzut wątków (albo wrzucasz na forum) i może będą tam hinty co się dzieje ;-)
PK
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:32
0

Co się dzieje podczas tego długiego czekania? Czy CPU w procesie Javy chodzi na 100%?
Jeśli tak, to ja obstawiam wyciek pamięci. Sesja użytkownika zżera z jakiegoś powodu sporo heapa i dlatego jest coraz wolniej i wolniej, a gc ma coraz więcej pracy.

Jeżeli cały system operacyjny przymula, to może po prostu java dostała za dużo -Xmx i pamięć wirtualna migocze. Java tak już ma.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.