Konfigurowanie i sprawdzanie środowiska systemu Linux

Systemy operacyjne Linux® są poddawane dużej liczbie poprawek i aktualizacji.

Personel IBM® nie może przetestować maszyny VM Java dla każdej poprawki. Intencją jest przetestowanie przed najnowszymi wydaniami kilku dystrybucji. W ogólnym przypadku systemy powinny być na bieżąco z najnowszymi poprawkami. Aby uzyskać najnowsze odświeżanie i wyświetlić listy poprawek, należy zapoznać się z stronami wsparcia dla pakietu Java SDK.

Katalog roboczy

Bieżący katalog roboczy procesu maszyny VM Java jest domyślnym położeniem dla generowania plików core, zrzutów Java™ , zrzutów sterty i danych wyjściowych śledzenia maszyny wirtualnej Java, w tym śledzenia aplikacji i śledzenia metod. Dla tego katalogu musi być dostępna wystarczająca ilość wolnego miejsca na dysku. Ponadto wirtualna maszyna języka Java musi mieć uprawnienia do zapisu.

Zrzuty systemowe dla systemu Linux (pliki core)

Po wystąpieniu awarii najistotniejsze dane diagnostyczne, które należy uzyskać, to zrzut systemowy. Aby upewnić się, że ten plik jest generowany, należy sprawdzić następujące ustawienia.

Ustawienia systemu operacyjnego

Ustawienia systemu operacyjnego muszą być poprawne. Te ustawienia mogą różnić się w zależności od dystrybucji i wersji systemu Linux .

Aby uzyskać pełne pliki podstawowe, należy ustawić następujące opcje produktu ulimit :
ulimit -c unlimited		 turn on corefiles with unlimited size  
ulimit -n unlimited		 allows an unlimited number of open file descriptors
ulimit -m unlimited		 sets the user memory limit to unlimited
ulimit -f unlimited		 sets the file size to unlimited

Więcej informacji na temat ustawień produktu ulimit znajduje się w sekcji Konfigurowanie systemu w dokumentacji użytkownika OpenJ9 .

W środowisku Java 5 wartość ulimit -c dla miękkiego limitu jest ignorowana, a wartość twardego limitu jest używana do zapewnienia generowania pliku core.

Narzędzia Linux , takie jak automatyczne narzędzie Bug Reporting Tool (ABRT) i Apport, używają ustawień w pliku /proc/sys/kernel/core_pattern systemu Linux , aby przekierować pliki core do programu diagnostycznego. Te narzędzia i ustawienia plików produktu /proc/sys/kernel/core_pattern , które są używane, mogą uniemożliwić pomyślne wykonanie zrzutów systemowych przez maszynę JVM. Narzędzia są domyślnie włączone w niektórych dystrybucjach systemu Linux . Może zostać wyświetlony następujący komunikat o błędzie:
JVMPORT030W "proc/sys/kernel/core_pattern setting ..... 
specifies that the core dump is to be piped to an external program.
Attempting to rename either core or core.<pid>
Przejrzyj konfigurację tych narzędzi lub rozważ wyłączenie narzędzi, jeśli wystąpią problemy podczas próby wygenerowania zrzutów systemowych z maszyny VM Java.
Ustawienia wirtualnej maszyny języka Java

Aby wygenerować pliki core po wystąpieniu awarii, należy sprawdzić, czy wirtualna maszyna języka Java jest ustawiona do wykonania.

Uruchom program java -Xdump:what, który powinien generować następujące dane wyjściowe:
-Xdump:system:
    events=gpf+abort+traceassert+corruptcache,
    label=/mysdk/sdk//jrebin/core.%Y%m%d.%H%M%S.%pid.dmp,
    range=1..0,
    priority=999,
    request=serial
Te wartości są ustawieniami domyślnymi. Aby możliwe było wygenerowanie pliku core, gdy wystąpi awaria, należy ustawić co najmniej events=gpf . Opcje można zmieniać i ustawiać przy użyciu opcji wiersza komend -Xdump:system[:name1=value1,name2=value2 ...] .
Dostępne miejsce na dysku

Ilość dostępnego miejsca na dysku musi być wystarczająco duża, aby można było zapisać plik core.

Wirtualna maszyna języka Java (JVM) umożliwia zapisanie pliku core w dowolnym katalogu określonym w opcji label . Na przykład:
-Xdump:system:label=/mysdk/sdk/jre/bin/core.%Y%m%d.%H%M%S.%pid.dmp
Aby zapisać plik core w tym położeniu, musi być wystarczająca ilość miejsca na dysku (do 4 GB może być wymagana dla procesu 32-bitowego), a także poprawne uprawnienia dla procesu Java do zapisu w tym położeniu.

ZipException lub IOException w systemie Linux

Jeśli do ładowania różnych instancji klas używana jest duża liczba deskryptorów plików, może zostać wyświetlony komunikat o błędzie "java.util.zip.ZipException: error in opening .zip file" lub inna forma produktu IOException , która informuje, że nie można otworzyć pliku. Rozwiązaniem jest zwiększenie rezerwy na deskryptory plików za pomocą komendy ulimit . Aby znaleźć bieżący limit dla otwartych plików, należy użyć komendy:
ulimit -a
Aby zezwolić na większą liczbę otwartych plików, należy użyć komendy:
ulimit -n 8196

Linux na platformie zSeries

If you are running Java 7 on zLinux under zVM on z10 hardware, you must use zVM Version 5 Release 2 or later. Jeśli używane są poprzednie wersje systemu zVM, korzyści z wydajności nie są dostępne w programie DFP.

Biblioteki wątków

Dystrybucje obsługiwane przez wirtualną maszynę języka IBM Java VM udostępniają rozszerzoną bibliotekę POSIX Threads Library for Linux (NPTL).

Wersję glibc można wykryć, zmieniając w katalogu /lib i uruchamiając plik libc.so.6. Komenda ldd w systemie Linux drukuje informacje, które powinny być pomocne podczas pracy z zależnościami bibliotek współużytkowanych aplikacji.

Korzystanie z limitów czasu pracy procesora do sterowania zadaniami w trybie runaway

Ponieważ wątki w czasie rzeczywistym są uruchamiane z wysokim priorytetem i z harmonogramowaniem FIFO, aplikacje, które nie działają (zwykle z ciasnymi pętlami związanymi z procesorem), mogą spowodować, że system nie będzie reagował. W środowisku programistycznym może być przydatne w celu zapewnienia zabitych zadań polegających na zabicie przez ograniczenie ilości zasobów procesora, które mogą być konsumowane przez zadania. W sekcji #linux_setup__linux_core_files można znaleźć informacje na temat ustawień miękkich i twardych ustawień.

Komenda ulimit -t wyświetla bieżącą wartość limitu czasu w sekundach procesora. Tę wartość można zmniejszyć, używając miękkiego, na przykład ulimit -St 900 , aby ustawić miękki limit czasu na 15 minut lub wartości twarde, aby zatrzymać zadania w stanie runaway.