/ / wykorzystanie pamięci o wysokiej zamianie - java, java-ee, solaris

wykorzystanie wysokiej pamięci wymiennej - java, java-ee, solaris

Konfiguracja serwera:

  1. Fizyczny RAM - 16 Gb
  2. Zamiana pamięci - 27 Gb
  3. System operacyjny - Solaris 10
  4. Wolna pamięć fizyczna - 598 Mb
  5. Wykorzystana pamięć wymiany - ~ 26 Gb
  6. Wersja Java - VM VM Server HotSpot (TM) - 1.6.0_17-b04

Moim zadaniem jest zmniejszenie używanej pamięci wymiany: Rozwiązania, które mam

  1. Zatrzymaj wszystkie aplikacje Java i poczekaj na fizycznypamięć jest wystarczająco zwolniona. następnie wykonaj polecenie „swapoff -a” (aby dowiedzieć się, jak Solaris odpowiada temu poleceniu) ... poczekaj, aż używana pamięć wymiany spadnie do zera. następnie wykonaj polecenie „swapon -a”
  2. Zwiększ pamięć fizyczną

Potrzebuję pomocy w następujących kwestiach:

  1. Jaki jest odpowiednik solaris swapoff i swapon?
  2. Czy opcja 1 zadziała, aby usunąć używaną zamianę?

Stukrotne dzięki!!!

Odpowiedzi:

7 dla odpowiedzi № 1

Po pierwsze, Java i swap nie mieszają się. Jeśli twoja aplikacja Java zmienia się, jesteś po prostu skazany. Niewiele rzeczy morduje maszynę jak zamieniony proces Java. GC i zamiana to tylko koszmar.

Biorąc pod uwagę to, że jeśli używasz maszyny z procesem Java, to zamiana - ta maszyna jest za mała. Uzyskaj więcej pamięci lub zmniejsz obciążenie komputera (w tym sterty procesu Java, jeśli to możliwe).

Fakt, że twoje urządzenie nie ma pamięci fizycznej (600ish Mb) i nie ma wolnego miejsca wymiany (1ish Gb), jest kolejnym wskaźnikiem tego, że urządzenie jest znacznie przeciążone.

Wszelkiego rodzaju sytuacje mogą mieć negatywny wpływ na proces Java, gdy zasoby są wyczerpane.

Zabicie procesu Java „wyciągnie goswap ”, ponieważ proces nie istnieje, nie może być w zamianie. To samo dla wszystkich innych procesów.„ Pamięć wymiany ”może nie od razu ulec awarii, ale jeśli proces nie istnieje - może„ t swap (z wyjątkiem użycia trwałych buforów pamięci współużytkowanej, które mają nieszczęście zostać zamienionymi, a Java zwykle ich nie używa).

Nie znam naprawdę dobrego sposobu, aby powiedzieć systemowi operacyjnemu, aby zablokował konkretny program w fizycznej pamięci RAM i uniemożliwił jego stronicowanie. I, szczerze mówiąc, nie chcesz.

Cokolwiek zajmuje całą pamięć RAM, musiszpoważnie rozważ zmniejszenie jego powierzchni lub przeniesienie procesu Java z tego komputera. Po prostu uciekasz do twardych granic, a w tym kamieniu nie ma już krwi.


0 dla odpowiedzi nr 2

Nie do końca jasne, o co pytasz -zatrzymywanie aplikacji zajmujących pamięć powinno zwolnić pamięć (i potencjalnie zamienić przestrzeń). Z opisu nie wynika jasno, że Java zajmuje całą pamięć na twoim urządzeniu - zwykle nie ma powodów, aby JVM przydzielał więcej pamięci niż fizyczna pamięć na urządzeniu. Sprawdź, jak uruchomić JVM i ile pamięci jest przydzielone.

Oto jak zarządzać wymianą w systemie Solaris:

http://www.aspdeveloper.net/tiki-index.php?page=SolarisSwap