Configurazione delle dimensioni di cache per gli asset gestiti e il classloader di asset gestiti
In base al numero di applicazioni del processo che utilizzano le risorse gestite e al numero di file nelle risorse gestite, è possibile che si verifichi un rallentamento delle prestazioni quando si utilizzano le risorse gestite. Se la cache del programma di caricamento classi degli asset gestiti, la cache degli asset gestiti o entrambe le cache sono troppo piccole, le cache devono essere aggiornate spesso, riducendo le prestazioni. Ottimizzare le cache impostando i parametri di configurazione nel file 100Custom.xml per definire le dimensioni della cache per le risorse gestite.
Informazioni su questa attività
ManagedAssetClassLoader .<classloader-cache-size>- Ogni snapshot di un'applicazione del processo o di un toolkit contiene un'istanza del programma di caricamento classe. Assicurarsi che
<classloader-cache-size>sia impostato su un valore superiore al numero totale di snapshot dell'applicazione del processo e del toolkit attive. <classloader-resource-map-size>Il parametro
<classloader-resource-map-size>indica il numero di classi Java che le risorse gestite possono contenere e memorizzare nella cache in tutte le istantanee. La dimensione deve essere abbastanza grande da contenere tutti i file da tutti i file JAR dell'asset gestito nelle istantanee nell'ambiente di distribuzione. Quando più istantanee includono la stessa serie di file JAR della risorsa gestita, è necessario contare il contenuto del file più volte. Quando una snapshot del toolkit contiene risorse gestite, è necessario contare il contenuto del file solo una volta, indipendentemente dal numero di applicazioni del processo o toolkit a cui fa riferimento. Includere un buffer nella dimensione della cache impostata in modo che non superi il limite con un ulteriore sviluppo dell'applicazione. Il seguente esempio mostra come calcolare la dimensione della cache richiesta.Tenere presente che è presente il seguente elenco di file JAR di risorse gestite in tutte le istantanee in uso:- file1.jar contenente 50 file di classe
- file2.jar contenente 70 file di classe
- file3.jar contenente 100 file di classe
<classloader-resource-map-size>su (50 + 70 + 100) * 1.2 = 264.
<server>
<classloader-cache-size merge="replace">1000</classloader-cache-size>
<classloader-resource-map-size merge="replace">5120</classloader-resource-map-size>
</server>
Per ulteriori informazioni su come apportare modifiche a 100Custom.xml, consultare Il file 100Custom.xml e la configurazione.È possibile utilizzare i seguenti metodi per calcolare i requisiti di memoria per la cache dell'asset gestito e la cache del classloader dell'asset gestito. Se le dimensioni di queste cache causano problemi di memoria per i membri del cluster delle applicazioni, potrebbe essere necessario aumentare la dimensione heap Java.
Per ogni file nel file JAR della risorsa gestita, la memoria utilizzata dalle cache della risorsa gestita è la somma di due elenchi. Un elenco contiene l'asset e l'altro contiene una rappresentanza interna. Gli elenchi sono di tipo java.util.LinkedList, che utilizza una chiave e un valore. La chiave è composta da un UUID e dal percorso all'interno del file JAR. L'UUID è sempre 36 byte, ma la lunghezza del percorso e quindi la dimensione potrebbero variare. Questa chiave viene utilizzata da entrambi gli elenchi.
2 x (UUID + path length) + file content + internal representationSostituendo i valori fissi, è possibile determinare la seguente formula:2 x ( 36 bytes + path length) + file content + 52 bytesAd esempio, si consideri un file JAR che include i seguenti file:* com/test/EchoService.class * com/test/EchoService.java, * META-INF/MANIFEST.MF * .classpath * .projectAnche se tutti questi file verranno caricati, per il momento considerare com/test/EchoService.class . Le dimensioni delle due liste sono:- Primo elenco
- Chiave = e9771549-3ff8-4d81-b678-f5dfee1b1b12, com/test/EchoService.class) = 36 byte
- Lunghezza percorso = 26 byte
- Valore = contenuto del file com/test/EchoService.class = 931 byte
- Secondo elenco
- Chiave = e9771549-3ff8-4d81-b678-f5dfee1b1b12, com/test/EchoService.class) = 36 byte
- Lunghezza percorso = 26 byte
- Valore = "managedasset:61.f9b29441-0b1a-4f03-adfd-e98120b3c435" = 52 byte
- Quando si utilizza una risorsa gestita, viene caricato l'intero file JAR, incluso ogni file che contiene. Per ridurre la quantità di dati caricati, rimuovere i file non necessari dal file JAR. Gli asset gestiti vengono caricati in modalità Lazy. Quando si tenta di accedere a una classe in un file JAR, viene caricato l'intero file JAR.
- L'utilizzo della memoria dipende dalle dimensioni del file e dalla lunghezza del percorso. Migliaia di file di piccole dimensioni in una struttura di pacchetti profonda potrebbero avere un impatto significativo sull'utilizzo della memoria.