Errori HTTP 5xx durante il rendering della pagina in Adobe Experience Manager as a Cloud Service
In Adobe Experience Manager as a Cloud Service, il rendering delle pagine può diventare lento o non rispondere quando le chiamate HTTP esterne bloccano i thread di gestione delle richieste. In caso di traffico aumentato, i thread bloccati possono causare esaurimento dei thread ed errori HTTP 5xx per i visitatori del sito. Per risolvere questo problema, ottimizza le chiamate HTTP esterne, implementa il caching e configura impostazioni di timeout efficaci.
Descrizione description
Ambiente
Adobe Experience Manager (AEM) as a Cloud Service (tutte le versioni)
Sintomi
- Aumento degli errori HTTP 5xx (ad esempio 503 o 504) per i visitatori del sito
- Pagine di prodotto lente o che non rispondono, soprattutto durante i picchi di traffico
- I registri dell’applicazione possono mostrare errori di timeout della connessione durante la chiamata a servizi esterni
Causa
Quando l’applicazione effettua chiamate HTTP esterne sincrone (ad esempio per dati di prodotto o SKU) direttamente dal thread di gestione delle richieste durante il rendering della pagina e tali chiamate non vengono memorizzate nella cache o non hanno timeout effettivi, i thread di richiesta possono bloccarsi in attesa di risposte esterne lente. In caso di traffico aumentato, questo può esaurire i thread di richiesta disponibili, causando il mancato funzionamento delle nuove richieste con errori HTTP 5xx.
Risoluzione resolution
Per risolvere il problema, segui la procedura riportata di seguito.
-
Esamina il codice dell’applicazione per identificare tutte le chiamate HTTP esterne sincrone effettuate durante il rendering della pagina, in particolare quelle eseguite sui thread di gestione delle richieste.
-
Refactoring del codice per eseguire chiamate HTTP esterne in modo asincrono o all’esterno del thread di richiesta principale, ove possibile.
-
Implementa il caching per i dati esterni (come informazioni su prodotti o SKU) per evitare chiamate ripetute durante il rendering della pagina. Assicurati che la logica di invalidamento della cache sia allineata ai requisiti di aggiornamento dei dati.
-
Configurare timeout di connessione e lettura (socket) efficaci su tutti i client HTTP utilizzati per le chiamate esterne. Ad esempio, con Apache HttpClient:
code language-none RequestConfig config = RequestConfig.custom() .setConnectTimeout(5000) .setSocketTimeout(5000) .build();Regola i valori di timeout in base al tuo caso d’uso.
-
Monitorare l’utilizzo del pool di thread di richieste nell’ambiente AEM. Impostare avvisi per gli stati di attesa di I/O o di blocco del thread elevato per rilevare tempestivamente un possibile esaurimento del thread.
-
Esegui il test dell’applicazione sotto carico in un ambiente di staging per garantire che l’esaurimento del thread non si ripeta in caso di richieste simultanee aumentate.
Dopo aver implementato queste modifiche, verifica che il rendering della pagina rimanga reattivo e che gli errori HTTP 5xx non vengano più osservati durante i picchi di traffico.