Configurazione e controllo dell'ambiente Linux

I sistemi operativi Linux® subiscono un numero elevato di patch e aggiornamenti.

Il personale IBM® non può testare la Java VM su ogni patch. L'intenzione è quella di testare le release più recenti di alcune distribuzioni. In generale, è necessario mantenere aggiornati i sistemi con le patch più recenti. Per ottenere gli ultimi aggiornamenti e visualizzare gli elenchi di correzioni, consultare le pagine di supporto SDK Java.

Directory di lavoro

La directory di lavoro corrente del processo Java VM è l'ubicazione predefinita per la generazione di file di base, dump Java™ , dump heap e output di traccia Java VM, inclusa la traccia dell'applicazione e la traccia del metodo. Per questa directory deve essere disponibile spazio su disco sufficiente. Inoltre, Java VM deve disporre dell'autorizzazione di scrittura.

Dump di sistema Linux (file core)

Quando si verifica un arresto anomalo, i dati diagnostici più importanti da ottenere sono il dump di sistema. Per assicurarsi che questo file venga generato, è necessario controllare le impostazioni riportate di seguito.

Impostazioni del sistema operativo

Le impostazioni del sistema operativo devono essere corrette. Queste impostazioni possono variare in base alla distribuzione e alla versione Linux .

Per ottenere i file core completi, impostare le seguenti opzioni 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

Per ulteriori informazioni sulle impostazioni ulimit , consultare Configurazione del sistema nella documentazione utente OpenJ9 .

Da Java 5, il valore ulimit -c per il limite soft viene ignorato e il limite hard viene utilizzato per garantire la creazione del file core.

Gli strumenti Linux come ABRT (Automatic Bug Reporting Tool) e Apport utilizzano le impostazioni nel file Linux /proc/sys/kernel/core_pattern per reindirizzare i file core a un programma di diagnostica. Questi strumenti e le impostazioni del file /proc/sys/kernel/core_pattern che utilizzano potrebbero impedire alla JVM di produrre correttamente i dump di sistema. Gli strumenti sono abilitati per impostazione predefinita in alcune distribuzioni Linux . Potrebbe essere visualizzato il seguente messaggio di errore:
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>
Rivedere la configurazione di questi strumenti o considerare la disabilitazione degli strumenti se si verificano problemi quando si tenta di generare dump di sistema da Java VM.
Impostazioni Java Virtual Machine

Per generare i file principali quando si verifica un arresto anomalo, verificare che Java VM sia impostato per eseguire tale operazione.

Eseguire java -Xdump:what, che dovrebbe produrre il seguente output:
-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
Questi valori sono le impostazioni predefinite. È necessario impostare almeno events=gpf per generare un file core quando si verifica un arresto anomalo. È possibile modificare e impostare le opzioni con l'opzione della riga comandi -Xdump:system[:name1=value1,name2=value2 ...]
Spazio su disco disponibile

Lo spazio su disco disponibile deve essere sufficiente per la scrittura del file core.

La JVM consente la scrittura del file core in qualsiasi directory specificata nell'opzione label . Ad esempio:
-Xdump:system:label=/mysdk/sdk/jre/bin/core.%Y%m%d.%H%M%S.%pid.dmp
Per scrivere il file core in questa ubicazione, lo spazio su disco deve essere sufficiente (potrebbero essere richiesti fino a 4 GB per un processo a 32 bit) e le autorizzazioni corrette per il processo Java per scrivere in tale ubicazione.

ZipException o IOException su Linux

Quando si utilizza un numero elevato di descrittori di file per caricare diverse istanze di classi, è possibile che venga visualizzato un messaggio di errore "java.util.zip.ZipException: error in opening .zip file" o un altro tipo di IOException che indica che non è stato possibile aprire un file. La soluzione è aumentare il provisioning per i descrittori file, utilizzando il comando ulimit . Per individuare il limite corrente per i file aperti, utilizzare il comando:
ulimit -a
Per consentire più file aperti, utilizzare il comando:
ulimit -n 8196

Linux su zSeries

Se si sta eseguendo Java 7 su zLinux in zVM su hardware z10 , è necessario utilizzare zVM Versione 5 Release 2 o successiva. Se si utilizzano versioni precedenti di DFP ( zVM, ), non si ottengono i vantaggi in termini di prestazioni disponibili con DFP.

Librerie di thread

Le distribuzioni supportate dalla VM Java IBM forniscono la NPTL (Native POSIX Threads Library for Linux ) avanzata.

È possibile rilevare la versione glibc passando alla directory /lib ed eseguendo il file libc.so.6. Il comando Linux ldd stampa le informazioni che consentono di elaborare le dipendenze della libreria condivisa dell'applicazione.

Utilizzo dei limiti di tempo CPU per controllare le attività runaway

Poiché i thread in tempo reale vengono eseguiti con priorità elevate e con la pianificazione FIFO, le applicazioni malfunzionanti (di solito con stretti loop di collegamento della CPU) possono causare la mancata risposta di un sistema. In un ambiente di sviluppo può essere utile per garantire che le attività runaway vengano uccise limitando la quantità di CPU che le attività potrebbero utilizzare. Consultare #linux_setup__linux_core_files per una discussione sulle impostazioni dei limiti soft e hard.

Il comando ulimit -t elenca il valore di timeout corrente in secondi CPU. Questo valore può essere ridotto con soft, ad esempio, ulimit -St 900 per impostare il timeout soft su 15 minuti o con valori hard per arrestare le attività runaway.