2012-09-13 8 views
8

Muszę wyjaśnić, dlaczego moja aplikacja działa słabo w zdalnej lokalizacji. Niedopuszczalne będzie instalowanie profilera. Podejrzewam, że maszyna jest źle skonfigurowana, ale potrzebuję prostego sposobu, aby pokazać, że standardowa aplikacja cierpi na ich komputerze, tym samym zwalniając moją aplikację i przesuwając fokus na swoich administratorów systemu.Jakie narzędzia Java istnieją do testowania wydajności procesora, pamięci, dysku i sieci we/wy komputera?

Idealnie, chciałbym zasugerować, aby zainstalować prostą aplikację Java, która testuje wydajność środowiska hosta. Jeśli mógłby zwrócić niektóre specyfikacje dla procesora, dysku, sieci itp., Byłyby idealne.

Spodziewałem się znaleźć coś takiego w Internecie, ale jak dotąd nie udało mi się przeszukać.

+1

Co według Ciebie może powodować problem? Twoja aplikacja zawiera dużo danych? Ma fantazyjną grafikę? Połączenie z bazami danych? Możesz przetestować tylko to, co Twoim zdaniem powoduje problem. –

+0

Co osiąga słabo? Czy ma on wolny dostęp do bazy danych, czy uruchomienie jej zajmuje dużo czasu. Czy zawsze działa źle lub czy wyniki są niespójne? –

+0

Zawsze możesz zrobić kilka zrzutów wątku jako profiler dla biedaka, używając 'jstack' lub' kill -3'. –

Odpowiedz

12

Jeśli chodzi o "prostą aplikację Java", wcześniej zrobiłem coś podobnego. Moje wysiłki koncentrowały się na profilowaniu maszyny wirtualnej Java (wirtualna maszyna - "JVM"), nie testując wydajności konkretnej aplikacji Java. Skupiono się na testowaniu możliwości hostingu systemu operacyjnego - wykonywanie:

  • CPU
  • pamięci
  • System operacyjny
  • Jeśli wirtualne, serwer VM (nie JVM) sama - w tym zarówno wirtualne i fizyczne składniki wszystkich powyższych.
  • W dużym stopniu ignoruje czynniki zewnętrzne, np. dysk i sieć.

Rozwiązania Spojrzałem na tego obejmowały:

SciMark jest kompozytem odniesienia Java pomiaru skuteczności kodów liczbowych występujących w naukowej i aplikacje inżynieryjne. Składa się z pięciu rdzeni obliczeniowych: FFT, Gauss-Seidel relaksacji, rzadkie mnożenie macierzy, integrację z Monte Carlo i gęstą czynnikowość LU .

Jądra te są wybierane w celu wskazania, jak dobrze podstawowe maszyny JVM/JIT wykonują aplikacje używające tego typu algorytmów. Rozmiary problemów są celowo wybierane jako małe w celu ograniczenia skutków hierarchii pamięci i skupienia się na wewnętrznych problemach JVM/JIT i procesorze J2M. Większa wersja testu porównawczego (SciMark 2.0 LARGE) odnosi się do wydajności podsystemu pamięci o rozmiarach poza zakresem pamięci podręcznej .

Mierzy kilka jąder obliczeniowych i zgłasza wynik złożony w przybliżonych Mflops (Miliony operacji zmiennoprzecinkowych na sekunda).

Chociaż nieco przestarzały (2004), SciMark wciąż wydaje się być dość skuteczny.

Każde uruchomienie testowe trwa około 30 sekund.

SPECjvm2008 (Java Virtual Benchmark Machine) jest punktem odniesienia apartament dla pomiaru wydajności Java Runtime Environment (JRE), zawierające kilka aplikacji prawdziwe życie i wzorców koncentrując się na funkcjonalności core java . Pakiet skupia się na wydajności JRE wykonującej pojedynczą aplikację; odzwierciedla wydajność procesora sprzętowego i podsystemu pamięci, ale ma niską zależność od operacji we/wy pliku i nie obejmuje żadnych operacji we/wy między komputerami. Obciążenie SPECjvm2008 naśladuje wiele powszechnych obliczeń ogólnego przeznaczenia. Te cechy odzwierciedlają zamiar, że ten benchmark będzie miał zastosowanie do pomiaru podstawowej wydajności Java na szerokiej gamie systemów klienta i serwera.

SPEC znajdzie również interfejs użytkownika Java ważne, a apartament obejmuje zatem odniesienia startowych i ma odpowiednią kategorię run nazwie bazowej, która musi być prowadzony bez dostrojenia JVM do poprawy z wykonywania skrzynki .

SPECjvm2008 Benchmark Highlights

  • Wykorzystuje rzeczywiste aplikacje życiowe (jak Derby, Sunflow i javac) i obszarowych koncentruje odniesienia (jak XML, serializacji, krypto i scimark).
  • Mierzy również wydajność systemu operacyjnego i sprzętu w kontekście wykonywania środowiska JRE.

przeciwieństwie SciMark, SPECjvm2008 trwa znacznie dłużej, aby w pełni wykonać Suite - taking just over 2 hours.


Do testowania sieci, chciałbym użyć czegoś podobnego iperf, dostępną zarówno dla Linux/Windows/etc.

Do testowania wydajności dysku kryje się za tym cała nauka, a nie wiedząc, z jakiego systemu operacyjnego korzystasz, nie mogę podać konkretnej odpowiedzi. Jednakże, jeśli używasz Linuksa, na przykład, przejrzałbym this.

Powiązane problemy