Scenariusz, który widzimy najczęściej: aplikacja „zwalnia po południu", zespół dokłada RAM i vCPU, po dwóch tygodniach jest tak samo. Czas naprawy incydentu rośnie z kwartału na kwartał, a monitoring pokazuje procesor na 30 %. Przyczyna prawie nigdy nie siedzi w sprzęcie — siedzi w konfiguracji JVM i serwera, którą ktoś ustawił „na oko" lata temu.
Pełna treść
Co znajdujemy w logach w pierwszych 15 minutach
- Flagi GC z poprzedniej wersji Javy. Parametry dobrane pod JDK 6 przeniesione przy migracji na JDK 8 albo 11: stary kolektor, sztywne rozmiary generacji, brak logu GC. Efekt to pauzy full GC liczone w sekundach, dokładnie w porze szczytu, kiedy sterta jest najbardziej pofragmentowana.
- Pula wątków ustawiona dziesięć lat temu. Limit wątków, work managery i progi stuck thread ustawione pod ruch z innej epoki. W szczycie serwer zgłasza stuck threads, health state przechodzi w „warning", a load balancer wyłącza węzeł — MTTR rośnie, bo zanim ktoś zajrzy w logi, ruch przeniósł się na pozostałe węzły i problem „sam minął".
- Pula JDBC mniejsza niż liczba wątków. Wątki czekają na połączenie z bazą, CPU stoi na 30 %, a użytkownik widzi timeouty. Dokładanie vCPU nic tu nie zmienia, bo procesor nie jest wąskim gardłem.
Żadna z tych rzeczy nie znika po dołożeniu sprzętu. Wszystkie widać w logu serwera, logu GC i thread dumpie zebranym w momencie spowolnienia — nie po restarcie, kiedy dowody już zniknęły.
Co zbierać, zanim zadzwonisz
- Log GC z ostatniego incydentu (włączony na stałe, rotowany — koszt pomijalny).
- Trzy thread dumpy w odstępie 10 sekund z momentu spowolnienia, nie po restarcie.
- Parametry startowe JVM i konfigurację pul (wątki, JDBC, JMS) z domeny — jeden plik konfiguracyjny.
Co daje audyt zamiast kolejnej zmiany hardware
Mapa ryzyk jednej domeny w dwa tygodnie, z priorytetami i planem — nie 80-stronicowy raport. Pierwszy tydzień zwykle wystarcza, żeby wskazać dwie, trzy zmiany konfiguracji do wdrożenia w jednym oknie serwisowym. Reszta to plan na kolejne okna, z pomiarem przed i po.
Masz log GC i thread dump z ostatniego incydentu? Piętnaście minut i powiemy, które z tych trzech. Punkt wyjścia: Audyt Middleware albo planner ryzyka wersji WebLogic.
Źródła: Oracle, „Tuning Performance of Oracle WebLogic Server" (Thread Management, Tuning Data Sources), docs.oracle.com; Oracle, „HotSpot Virtual Machine Garbage Collection Tuning Guide", docs.oracle.com. Liczby w scenariuszu są ilustracyjne — pochodzą z typowych przypadków, nie z jednego klienta.