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.
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 unlimitedWięcej informacji na temat ustawień produktu
ulimitznajduje się w sekcji Konfigurowanie systemu w dokumentacji użytkownika OpenJ9 .W środowisku Java 5 wartość
ulimit -cdla 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:
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.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>- 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:
Te wartości są ustawieniami domyślnymi. Aby możliwe było wygenerowanie pliku core, gdy wystąpi awaria, należy ustawić co najmniej-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=serialevents=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 opcjilabel. Na przykład:
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.-Xdump:system:label=/mysdk/sdk/jre/bin/core.%Y%m%d.%H%M%S.%pid.dmp
ZipException lub IOException w systemie Linux
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 -aAby zezwolić na większą liczbę otwartych plików, należy użyć komendy:ulimit -n 8196Linux 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.