pierwsze, tylko trochę tle:Kolce Wykorzystanie procesora w WebSphere 6.1
jednego z naszych klientów przeżywa Wykorzystanie procesora kolce dla WebSphere przypadkach uruchomiony jeden z naszych aplikacji internetowych (inne wystąpienia z innych aplikacji są w porządku) . Posiadają środowisko testowe i środowisko na żywo (zarówno iSeries), z których oba napotykają problem - z pojedynczą instalacją aplikacji na instancję. Aplikację tę wdrożyliśmy lokalnie w naszych własnych środowiskach testowych, a także w przypadku wielu innych klientów w systemie iSeries bez podobnych problemów.
Co się rzeczywiście dzieje:
Każdy drugi lub tak, użycie procesora przez proces WebSphere użycie procesora skacze do dowolnego z 7%
- 20%
chociaż istnieją żadne wnioski są przetwarzane w czasie. Klient zgłosił, że widzi skoki tak wysokie, jak 30%
. Te wartości szczytowe wynoszą średnio 1.5%
jednostek centralnych - inne instancje produktu WebSphere zwykle używają wartości 0%
- podczas bezczynności.
Moje badania dotychczas
Tak, miałem spojrzenie na wątków. Środowisko testowe z jednym wątkiem używało cykli procesora ~350
na sekundę. Podobny wątek w ich środowisku na żywo używał ~1500
cykli procesora na sekundę (pokazując, że ma większy procesor). Stos wywołań dla tych wątków wygląda
Type Program Statement Procedure
QLESPI QSYS 17 LE_Create_Thread2__FP12crtt >
QJVALIBJVM QSYS 7 startThread__FPv
J com/ibm/ws/util/Threa > run
J com/ibm/ws/util/Threa > run
J com/ibm/ws/util/Threa > getTask
J com/ibm/ws/util/Bound > poll
Cała nazwa klasy z dolnej linii jest com/ibm/ws/util/BoundedBuffer
. Poprosiłem klientowi wykonać JVM zrzutu dla mnie - tylko dodatkowe informacje uzyskałem od to była nazwa wątku:
Thread: 00002F82 Deferrable Alarm : 11
Teraz moje pytania:
- Czy każdy z was zidentyfikować problem, biorąc pod uwagę te objawy? (Może to jest długie ujęcie!)
- Co to jest
Deferrable Alarm
? W Doku JVM widzę 4 wątki o tej nazwie. Pozostałe trzy wydają się dobrze. Debugując mój lokalny produkt WebSphere (w systemie Windows) i dodając punkty przerwania w klasieBoundedBuffer
, widzę, żeBoudedBuffer
s są odpytywane i okresowo wywołują niektóre detektory. - Nie mam dostępu do konsoli WebSphere dla komputerów klientów i nie są one właścicielem aż do wprowadzenia jakichkolwiek zmian w konfiguracji. Mogę poprosić ich, żeby sprawdzili konsolę dla mnie - co powinienem poprosić ich, żeby na nią patrzyli?
- Mam dostęp do telnetu do skrzynki klienta, czy jest coś jeszcze, co mogę tu zbadać? Patrząc na pliki profilu WebSphere itp.? Które pliki powinienem oglądać?
- Ponieważ stos wywoławczy i zrzut maszyny JVM nie odwołują się bezpośrednio do naszego kodu, czy można bezpiecznie założyć, że jest to problem z konfiguracją?
To było długie pytanie, więc dziękuję za przeczytanie tej książki.
30 Aktualizacja kwiecień (1)
Dziś rano zauważyłem, że to zachowanie tylko dzieje po pierwsze żądanie dzień zostało przetworzone (niezależnie od tego, która jest wywoływana Web Service). To wskazuje palcem naszą aplikację lub oś Apache. Czy to możliwe, że to normalne zachowanie ?!
30 Aktualizacja kwiecień (2)
Wygląda więc na to, że działalność ta CPU jest jakiś rodzaj aktywności sprzątający na internetowej pojemnika lub może coś wewnątrz Apache Axis. Obserwowałem to teraz w kilku różnych aplikacjach internetowych na kilku różnych serwerach. Aplikacje bez komponentu sieciowego nie mają takiego samego dodatkowego obciążenia procesora.
Wyobrażam sobie, że jeśli jest to praca domowa, to "dostrojenie" może być w pewnym sensie nieproduktywne - przez to, mam na myśli to, że lepsze działanie serwera aplikacji może negatywnie wpłynąć na ilość "prawdziwej" pracy, jaką może zrobić.
Czy ten klient iSeries znajduje się na tym samym poziomie co inni klienci? Czy istnieją inne różnice, które czynią ten wyjątek? – Ichorus
Tak, jest na tym samym poziomie. Zdarza się tak również w przypadku produktu WebSphere 5.1, jak również 6.1 –