Tecniche consigliate per il test delle prestazioni

Introduzione

Il test delle prestazioni è una parte importante di qualsiasi implementazione AEM. A seconda dei requisiti del cliente, è possibile eseguire test delle prestazioni sulle istanze di pubblicazione, sulle istanze dell’autore o su entrambe.

Questa documentazione descriverà le strategie e le metodologie generali per l’esecuzione dei test di prestazioni, nonché alcuni degli strumenti messi a disposizione dall’Adobe per facilitare il processo. Infine, analizzeremo alcuni degli strumenti disponibili nella AEM 6 per facilitare la regolazione delle prestazioni, sia dal punto di vista dell’analisi del codice che della configurazione del sistema.

Simulazione della realtà

La cosa più importante quando si eseguono test delle prestazioni è assicurarsi di imitare un ambiente di produzione il più vicino possibile. Anche se questo può essere spesso difficile, è imperativo garantire la precisione di tali test. Quando si lavora alla progettazione di test delle prestazioni, è importante tenere conto dei seguenti punti:

  • Contenuti simili a quelli di produzione

Molte misurazioni delle prestazioni in AEM, come il tempo di risposta della query, possono essere influenzate dalle dimensioni del contenuto sul sistema. È importante assicurarsi che l’ambiente di test disponga di una copia del più simile possibile dei dati di produzione.

  • Codice di produzione

La versione AEM e gli hotfix distribuiti in produzione devono essere gli stessi nell'ambiente di test. È inoltre importante testare la versione del codice distribuito in produzione.

  • Hardware e configurazione di rete simili a quelli della produzione

I test saranno privi di senso senza un ambiente che assomigli il più possibile alla produzione. Idealmente, le specifiche hardware, le interfacce di rete, i bilanciatori di carico e la rete CDN dovrebbero essere identici alla produzione nell'ambiente di prova.

  • Carico di produzione

Molti problemi di prestazioni non vengono visti finché il sistema non è sotto carico pesante. Le buone prove di prestazione dovrebbero simulare il carico che i sistemi di produzione saranno sotto il loro picco.

Impostazione degli obiettivi

Prima di iniziare il test delle prestazioni, è necessario impostare requisiti non funzionali per specificare i tempi di caricamento e risposta. Se effettui la migrazione da un sistema esistente, assicurati che il tempo di risposta sia simile ai valori di produzione correnti. Per il carico, è meglio prendere il carico di picco corrente e raddoppiarlo. Questo assicurerà che il sito web possa continuare a funzionare bene mentre cresce.

Strumenti

Ci sono molti strumenti di test delle prestazioni disponibili sul mercato. Quando si esegue uno strumento di generazione del carico, è importante garantire che i computer che eseguono i test dispongano di una larghezza di banda di rete sufficiente. In caso contrario, una volta che la macchina di prova raggiunge i limiti della sua connessione, non verrà generato alcun carico aggiuntivo sull'ambiente sottoposto a prova.

Strumenti di test

  • Lo strumento Tough Day di Adobe può essere utilizzato per generare carico sulle istanze AEM e raccogliere i dati sulle prestazioni. Il team di progettazione AEM di Adobe utilizza effettivamente lo strumento per eseguire il test di carico del prodotto AEM stesso. Gli script eseguiti in Tough Day sono configurati tramite file di proprietà e file XML JMX. Per ulteriori informazioni, consulta la documentazione del giorno duro.

  • AEM fornisce strumenti pronti all’uso per visualizzare rapidamente query, richieste e messaggi di errore problematici. Per ulteriori informazioni, consulta la sezione Strumenti di diagnosi della documentazione del dashboard delle operazioni.

  • Apache fornisce un prodotto chiamato JMeter che può essere utilizzato per i test di prestazioni e carico e per il comportamento funzionale. È un software open source e gratuito da utilizzare, ma ha un set di funzioni più piccolo rispetto ai prodotti aziendali e una curva di apprendimento più ampia. JMeter è disponibile sul sito web di Apache all'indirizzo https://jmeter.apache.org/

  • Load Runnerè un prodotto di test del carico di livello Enterprise. È disponibile una versione di valutazione gratuita. Ulteriori informazioni sono disponibili all'indirizzo https://www.microfocus.com/en-us/products/loadrunner-load-testing/overview

  • È inoltre possibile utilizzare strumenti di test del carico basati su cloud come Neustar.

  • Quando si tratta di testare siti web mobili o reattivi, è necessario utilizzare un set separato di strumenti. Funzionano riducendo la larghezza di banda della rete, simulando connessioni mobili più lente come 3G o EDGE. Tra gli strumenti più utilizzati vi sono:

    • Network Link Conditioner - fornisce un'interfaccia utente facile da usare e funziona a un livello abbastanza basso sullo stack di rete. Include versioni per OS X e iOS;
    • Charles - un'applicazione proxy di debug web che, oltre a diversi altri utilizzi, fornisce la limitazione della rete. Le versioni sono fornite per Windows, OS X e Linux.

Strumenti di ottimizzazione

Monitoraggio

La documentazione Monitoraggio delle prestazioni è una buona risorsa per gli strumenti e i metodi che possono essere utilizzati per diagnosticare i problemi e individuare le aree da ottimizzare.

Modalità sviluppatore nell’interfaccia utente touch

Una delle nuove funzioni nell’interfaccia touch di AEM 6 è la modalità Sviluppatore . Così come gli autori possono passare dalla modalità di modifica a quella di anteprima, gli sviluppatori possono passare alla modalità di sviluppo nell’interfaccia utente dell’autore per visualizzare il tempo di rendering per ciascuno dei componenti della pagina e per vedere le tracce di stack di eventuali errori. Per ulteriori informazioni sulla modalità sviluppatore, consulta questa presentazione CQ Gems.

Utilizzo di rlog.jar per leggere i registri delle richieste

Per un'analisi più completa dei registri di richiesta su un sistema AEM, rlog.jar può essere utilizzato per cercare e ordinare i file request.log generati da AEM. Questo file jar viene incluso con un’installazione AEM nella cartella /crx-quickstart/opt/helpers . Per ulteriori informazioni sullo strumento di registro e sul registro delle richieste in generale, consulta la documentazione Monitoraggio e manutenzione .

Strumento Spiega query

Lo strumento Query di spiegazione negli strumenti di AEM ACS può essere utilizzato per visualizzare gli indici utilizzati durante l'esecuzione di una query. Questo può essere molto utile quando si ottimizzano le query in esecuzione lenta.

Strumenti PageSpeed

Gli strumenti PageSpeed di Google offrono analisi del sito per rispettare le best practice per le prestazioni della pagina, oltre a un plug-in che può essere installato insieme al dispatcher su un’istanza Apache per ulteriori ottimizzazioni. Per ulteriori informazioni, vedere il Sito Web degli strumenti di velocità della pagina.

Ambiente di authoring

Esecuzione dei test

Per eseguire test delle prestazioni nell’ambiente di authoring è necessario simulare l’esperienza degli autori di produzioni. Ciò significa che le installazioni dell’autore devono contenere tutti i componenti, i bundle OSGi, la personalizzazione dell’interfaccia utente, gli indici personalizzati e qualsiasi altra aggiunta in atto per le istanze dell’autore di produzione.

Sono disponibili molti framework di automazione progettati per le prestazioni e i test di carico. Gli script personalizzati possono essere registrati in questi strumenti e quindi riprodotti per simulare un picco di autori che eseguono attività di creazione e attivazione di contenuti simili contemporaneamente. Si consiglia di utilizzare lo strumento Giorno difficile per simulare attività come il caricamento di migliaia di risorse o l’attivazione di un gran numero di pagine.

Per i tipi di ambienti con requisiti di caricamento di risorse o authoring delle pagine pesanti, è fondamentale utilizzare strumenti come Tough Day per garantire che l’ambiente funzioni in modo efficiente sotto il carico di picco. 🔗 WebDAV è uno strumento che non richiede script e può essere utilizzato anche per caricare grandi quantità di risorse.

Passaggi specifici di MongoDB

Nei sistemi con backend MongoDB, AEM fornisce diversi MBeans JMX che devono essere monitorati durante l'esecuzione di test di carico o prestazioni:

  • MBean Statistiche di cache consolidate. È accessibile direttamente da:

https://server:port/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D6%2Cname%3D%22Consolidated+Cache+statistics%22%2Ctype%3D%22ConsolidatedCacheStats%22

Per la cache denominata Document-Diff, la frequenza di hit deve essere superiore a .90. Se la percentuale di hit scende al di sotto del 90%, è probabile che sarà necessario modificare la configurazione DocumentNodeStoreService. Ad Adobe, il supporto per i prodotti può consigliare impostazioni ottimali per il tuo ambiente.

  • Il mbean Statistiche archivio Oak È accessibile direttamente da:

https://server:port/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D16%2Cname%3D%22Oak+Repository+Statistics%22%2Ctype%3D%22RepositoryStats%22

La sezione ObservationQueueMaxLength mostrerà il numero di eventi nella coda di osservazione di Oak nelle ultime ore, minuti, secondi e settimane. Trova il maggior numero di eventi nella sezione "per ora". Questo numero deve essere confrontato con l'impostazione oak.observation.queue-length che si trova nel componente SlingRepositoryManager nella console OSGi. Se il numero più alto mostrato per la coda di osservazione supera l'impostazione queue-length, contatta il supporto Adobe per assistenza nell'aumentare l'impostazione. L’impostazione predefinita è 1.000, ma la maggior parte delle distribuzioni deve in genere portarla a 20.000 o 50.000.

Ambiente di pubblicazione

Esecuzione dei test

La parte più importante di una distribuzione che deve essere soggetta a test di carico è l’ambiente di pubblicazione o dispatcher rivolto all’utente finale.

Strumenti di test automatizzati di terze parti possono essere utilizzati per testare le prestazioni del sito web. Questi strumenti ti consentono di registrare i passaggi che gli utenti attraversano sul sito ed eseguire molte di queste sessioni contemporaneamente per simulare il carico tipico di un sito web di produzione.

La maggior parte dei siti web di produzione dispone di ottimizzazioni come il caching del dispatcher e una rete di distribuzione dei contenuti. Quando esegui il test, assicurati che queste ottimizzazioni siano disponibili anche per l’ambiente di test. Oltre a monitorare i tempi di risposta per gli utenti finali, è anche necessario monitorare le metriche di sistema sui server e i dispatcher di pubblicazione per garantire che il sistema non sia vincolato dalle risorse hardware.

Su un sistema che non richiede un livello elevato di personalizzazione, il dispatcher dovrebbe memorizzare nella cache la maggior parte delle richieste. Di conseguenza, il carico sull'istanza di pubblicazione dovrebbe rimanere relativamente piatto. Se è necessario un alto livello di personalizzazione, si consiglia di utilizzare tecnologie come iFrames o richieste di AJAX per il contenuto personalizzato in modo da consentire il maggior numero possibile di cache del dispatcher.

Per i test di base, Apache Bench può essere utilizzato per misurare i tempi di risposta dei server web e aiutare a creare un carico per misurare cose come perdite di memoria. Per ulteriori informazioni, consulta l’esempio nella documentazione sul monitoraggio.

Risoluzione dei problemi di prestazioni

Dopo aver eseguito i test delle prestazioni sull'istanza dell'autore, tutti i problemi dovranno essere esaminati, diagnosticati e risolti. È possibile utilizzare diversi strumenti e tecniche per eseguire analisi e risolvere i problemi:

  • Puoi controllare il Registro prestazioni richieste nel dashboard delle operazioni. Questo strumento può essere utilizzato per identificare le richieste di pagine lente

  • Analizzare le query lente in esecuzione con lo strumento Prestazioni query

  • Controlla l'elenco degli errori per eventuali errori o avvisi. Per ulteriori informazioni, consulta Logging

  • Monitorare le risorse hardware del sistema, ad esempio l'utilizzo della memoria e della CPU, l'I/O del disco o l'I/O di rete. Tali risorse sono spesso la causa di colli di bottiglia delle prestazioni

  • Ottimizza l’architettura delle pagine e il modo in cui vengono indirizzate per ridurre al minimo l’uso dei parametri URL, in modo da consentire il maggior numero possibile di memorizzazione in cache

  • Segui la documentazione Ottimizzazione delle prestazioni e Suggerimenti per l'ottimizzazione delle prestazioni

  • Se sono presenti problemi nella modifica di determinate pagine o componenti nelle istanze dell'autore, utilizza la modalità TouchUI Developer per controllare la pagina in questione. Questo fornisce un raggruppamento di ogni area di contenuto della pagina e del relativo tempo di caricamento

  • Minimizza tutti i JS e i CSS sul sito. Per ulteriori informazioni su come eseguire questa operazione, consulta questo post di blog.

  • Elimina CSS e JS incorporati dai componenti. Devono essere inclusi e minimizzati con le librerie lato client per ridurre al minimo il numero di richieste necessarie per eseguire il rendering della pagina

  • Utilizza gli strumenti del browser come la scheda Rete di Chrome per controllare le richieste del server e vedere quali richiedono più tempo.

Una volta individuate le aree problematiche, il codice dell'applicazione può essere esaminato per individuare ottimizzazioni delle prestazioni. Qualsiasi funzionalità preconfigurata AEM che non funziona correttamente può essere risolta con il supporto Adobe.

In questa pagina