L'ottimizzazione delle prestazioni è un argomento complesso. L'applicazione utente Identity Manager si basa su diverse tecnologie con numerose interazioni. Anche se non è possibile prevedere ogni singolo scenario di configurazione o di interazione utente che potrebbe causare una riduzione delle prestazioni, per alcuni sottosistemi esistono degli accorgimenti in grado di aumentare le prestazioni, come indicato di seguito.
L'applicazione utente consente la registrazione tramite Novell Audit nonché tramite il framework Apache log4j open source. Per default, la registrazione tramite Novell Audit è disattivata. È invece abilitata per default la registrazione di file e console tramite log4j.
NOTA:i tipi di eventi che è possibile registrare e le modalità di abilitazione o disabilitazione della registrazione sono descritti in Sezione 5.0, Configurazione della registrazione e in Sezione 12.0, Configurazione di registrazione, più avanti in questa guida.
Le impostazioni di configurazione di log4j sono contenute in un file denominato log4j.xml che si trova in $IDMINSTALL/jboss/server/IDMProv/conf/. Verso la parte inferiore di questo file, è presente il codice seguente:
<root> <priority value="INFO" /> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root>
L'assegnazione di un valore a root garantisce che ogni appender di log a cui non è stato esplicitamente assegnato un livello erediterà il livello di root (in questo caso, INFO). Ad esempio, poiché per default all'appender FILE non viene assegnato un livello soglia, esso assumerà quello della radice (root).
I livelli di log utilizzati da log4j sono DEBUG, INFO, WARN, ERROR e FATAL, come definito nella classe org.apache.log4j.Level. Una disattenzione nell'utilizzo di queste impostazioni può risultare dispendioso in termini di prestazioni.
È buona norma utilizzare INFO o DEBUG solo quando si effettua il debug di un determinato problema.
Per qualsiasi appender incluso nella radice a cui non è stato assegnato una soglia di livello, la soglia dovrebbe essere impostata su ERROR, WARN o FATAL a meno che, come appena spiegato, non si stia effettuando un debug.
Più che con il livello di dettaglio dei messaggi, la riduzione delle prestazioni con livelli di log elevati ha a che fare con il semplice fatto che la registrazione di file e console implica, in log4j, scritture sincrone. È disponibile una classe AsyncAppender, ma il suo utilizzo non garantisce prestazioni migliori. Questi problemi ben noti, che sono di Apache log4j e non di Identity Manager, sono descritti all'indirizzo http://logging.apache.org/log4j/docs/api-1.2.8/org/apache/log4j/performance/Logging.html.
L'impostazione di default di INFO nel file di configurazione log dell'applicazione utente (descritto precedentemente) è idonea per molti ambienti; ma, quando le prestazioni sono critiche, occorre considerare la possibilità di modificare il codice precedente di log4j.xml nel modo seguente:
<root> <priority value="ERROR"/> <appender-ref ref="FILE"/> </root>
In altre parole, rimuovere CONSOLE e impostare il livello di log su ERROR. Per una configurazione di produzione sottoposta a test e debug completi, non sono necessarie registrazioni a livello INFO, né è necessario lasciare abilitata la registrazione CONSOLE. La loro disattivazione può migliorare sensibilmente il risultato in termini di prestazioni.
Per ulteriori informazioni su log4j, consultare la documentazione disponibile all'indirizzo http://logging.apache.org/log4j/docs.
Per ulteriori informazioni sull'utilizzo di Novell Audit con Identity Manager, consultare la Guida all'amministrazione di Novell Nsure Identity Manager.
Le interrogazioni LDAP possono causare colli di bottiglia in un ambiente di server di directory ad alto traffico. Per mantenere un elevato livello di prestazioni in presenza di numerosi oggetti, Novell eDirectory (che rappresenta la base dell'Identity Vault di Identity Manager) registra le informazioni richieste frequentemente e le memorizza in indici. Quando un'interrogazione complessa viene eseguita su oggetti con attributi indicizzati, la risposta viene restituita molto più velocemente.
eDirectory viene fornito con gli attributi seguenti già indicizzati:
Aliased Object Name cn dc Equivalent to Me extensionInfo Given Name GUID ldapAttributeList ldapClassList Member NLS: Common Certificate Obituary Reference Revision Surname uniqueID uniqueID_SS
Quando si installa Identity Manager, lo schema della directory di default viene esteso con i nuovi tipi di classe di oggetti e i nuovi attributi relativi all'applicazione utente. Gli attributi specifici dell'applicazione utente, per default, non sono indicizzati. Per ottenere migliori prestazioni, può essere utile indicizzare alcuni di essi e probabilmente anche alcuni attributi LDAP tradizionali, specialmente se nel container utenti saranno presenti più di 5.000 oggetti.
Il principio generale è di indicizzare solo gli attributi che saranno sottoposti a interrogazione su base regolare (che potrebbero benissimo essere attributi diversi per ambienti di produzione diversi). L'unico modo per sapere con certezza quali attributi saranno maggiormente utilizzati consiste nel raccogliere statistiche del predicato in fase di runtime, un processo che comunque genera una riduzione delle prestazioni.
Le procedure per la raccolta delle statistiche del predicato sono descritte dettagliatamente nella eDirectory Administration Guide (Guida all'amministrazione di eDirectory), in cui viene illustrata anche l'indicizzazione. In generale, sarà necessario eseguire le operazioni seguenti:
Se già si conoscono gli attributi da indicizzare, non è necessario utilizzare Console One. Gli indici possono essere creati e gestiti in iManager tramite Manutenzione di eDirectory > Indici. Ad esempio, se si sa che gli utenti dell'organigramma eseguiranno molto probabilmente ricerche basate sull'attributo isManager, si può provare a indicizzare tale attributo per vedere se le prestazioni subiscono un miglioramento.
NOTA:è consigliabile indicizzare almeno gli attributi manager e isManager.
Per un approfondimento sull'indicizzazione degli attributi e sulle prestazioni, vedere il capitolo “Tuning eDirectory” in Novell’s Guide to Troubleshooting eDirectory di Peter Kuo e Jim Henderson (QUE Books, ISBN 0-7897-3146-0).
Vedere anche il capitolo “Maintaining Novell eDirectory” (Manutenzione di Novell eDirectory), in cui sono inoltre contenute indicazioni per l'ottimizzazione delle prestazioni, nella eDirectory Administration Guide (Guida all'amministrazione di eDirectory).
La quantità di memoria heap allocata a Java Virtual Machine può influire sulle prestazioni. Se si specificano valori di memoria minimi o massimi che sono o troppo bassi o troppo alti (ovvero maggiori della memoria fisica del computer), potrebbe verificarsi uno scambio di file di pagina eccessivo.
È possibile impostare la dimensione massima di JVM per il server JBoss modificando il file run.conf o run.bat (il primo per Linux, il secondo per Windows) in [IDM]/jboss/bin/ , utilizzando un editor di testo. Aumentare “-Xmx” da 128m a 512m o anche più. È possibile che sia necessario fare delle prove per determinare l'impostazione ottimale per il determinato ambiente.
NOTA:suggerimenti sull'ottimizzazione delle prestazioni di JBoss e Tomcat sono disponibili all'indirizzo http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming
Il timeout della sessione, ovvero la quantità di tempo per cui un utente può lasciare inattiva una pagina nel browser Web prima che venga visualizzato dal server un messaggio di avviso di timeout, può essere modificato nel file web.xml che si trova nell'archivio IDM.war. È necessario ottimizzare questo valore in base all'ambiente server e di utilizzo in cui verrà eseguita l'applicazione. In generale, è consigliabile che il timeout della sessione sia quanto più ridotto possibile. Se le esigenze aziendali consentono un timeout di 5 minuti, il server potrà rilasciare le risorse inutilizzate due volte prima di quanto farebbe con un valore di timeout di 10 minuti, migliorando così le prestazioni e la scalabilità dell'applicazione Web.
Per la regolazione del timeout della sessione, tenere presenti le considerazioni seguenti:
Per regolare il valore del timeout della sessione, occorrerà accedere all'archivio IDM.war , individuare il file web.xml al suo interno e modificare la parte seguente di tale file (in particolare, il valore numerico indicato qui come 20, ovvero 20 minuti, che rappresenta l'impostazione di default):
<session-config> <session-timeout>20</session-timeout> </session-config>
Sarà quindi necessario salvare il file e l'archivio e riavviare il server.
NOTA:è consigliabile che la modifica manuale dei file di archivio Web sia eseguita da una persona esperta nello sviluppo e nella distribuzione di applicazioni Web basate su Java.