Troubleshoot problemi di svuotamento dispatcher

In CQ, il dispatcher è lo strumento di memorizzazione in cache e bilanciamento del carico di Adobe. Le opzioni di memorizzazione in cache in CQ sono configurate attraverso il file di configurazione dispatcher.any. Per consentire un solido meccanismo di memorizzazione in cache, il file Dispatcher.any fornisce una serie di opzioni di configurazione. Per una descrizione del Dispatcher, vedi la documentazione di CQ Dispatcher.

Questo articolo tratta dei problemi che si possono incontrare quando si abilita la memorizzazione in cache su un'istanza di CQ utilizzando il dispatcher.

Abilita il debug sul dispatcher

Quando configuri CQ Dispatcher, assicurati che il meccanismo registrato del Dispatcher sia attivo.

Per il server web Apache, assicurati che le seguenti righe siano nel file http.conf:

<IfModule disp_apache2.c>
DispatcherConfig conf/dispatcher.any
DispatcherLog logs/dispatcher.log

# log level for the dispatc her log
# 0 Errors
# 1 Warnings
# 2 lnfos
# 3 Debug
DispatcherLogLevel 3

# if turned to 1, the dispatcher looks like a normal module
#since build 5210, this setting has no eff ect , since it used to crash
# apache if set to 0.
DispatcherNoServerHeader 1

# if turned to 1, request to I are not handled by the dispatcher
# use the mod_alias t hen for the correct mapping
DispatcherDeclineRoot 0
</IfModule>

La riga DispatcherLog logs/dispatcher.log indica il nome del file di log del dispatcher.

La riga DispatcherLogLevel 3 indica il livello dei messaggi da registrare.

Non appena riavvii il server web, viene creato il file dispatcher.log con le informazioni relative all'inizializzazione del dispatcher.

Puoi modificare il nome e la posizione del file di log rispetto alla directory radice del server web.

Con la memorizzazione in cache di dispatcher abilitata, sfoglia qualsiasi pagina del sito Web CQ, quindi apri il dispatcher.log. Visualizzi le seguenti righe:

[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cachefile does not exist or is a directory: \Library\WebServer\cache\index.html
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] try to create new cachefile: \Library\WebServer\cache\index.html
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cache-action for [/index.html]: CREATE
Nota:

L'istruzione di cache-action nel file di log è un indicatore che puoi utilizzare per identificare il risultato dell'ultima chiamata di pagina.

Problema

Come eseguo il debug di un problema in cui nessun contenuto viene salvato nella cache di dispatcher?

I dati della pagina web server sono memorizzati nella cache nella posizione specificata nell' attributo /docroot della sezione /cache del dispatcher.any. Quando identifichi che le informazioni specifiche della pagina non vengono messe in cache, vai al dispatcher.log. Alla fine del log ci sono le voci per l'ultima chiamata di pagina.

Errore "Caching disabled due to query string" trovato nel log

[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] checking [/libs/cq/security/userinfo.json]
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] Caching disabled due to query string: cq_ck=1350373444666
[Tue Oct 16 13:14:04 2012] [D] [1376(1532)] cache-action for [/libs/cq/security/userinfo.json]: NONE

Le richieste che contengono una stringa di query (come http://www.mysite.com/search?q=adobe) portano ad un output dinamico che dipende dalla stringa di query. Nella maggior parte dei casi, l'output della richiesta di stringa di query non dovrebbe essere messo in cache.

Soluzione

Se determini che alcuni parametri della query non si riferiscono direttamente all'output, configura il dispatcher in modo che ignori i parametri della stringa di query della richiesta.

Nella sezione ignoreUrlParams, specifica i parametri della stringa di query da ignorare.

In questa configurazione di esempio, le richieste URL con il parametro "q" della stringa di query sono memorizzate nella cache.

/ignoreUrlParams
 {
 /0001 { /glob "*" /type "deny" }
 /0002 { /glob "q" /type "allow" }
 }

Per la configurazione di cui sopra, il dispatcher tratta le seguenti richieste come identiche.

http://www.mysite.com/search?q=adobe
http://www.mysite.com/search?q=dispatcher
http://www.mysite.com/search

Errore "no cache due to authorization header" trovato nel log

[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] checking [/content/geometrixx-outdoors/en/unlimited-blog.html]
[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] no cache due to authorization header.
[Tue Oct 16 13:39:17 2012] [D] [1376(1532)] cache-action for [/content/geometrixx-outdoors/en/unlimited-blog.html]: NONE

Soluzione

Consulta il seguente forum di discussione per risolvere questo problema: Dispatcher attivo, ma non la memorizzazione in cache, pagine CQ5

Come eseguo il debug dei file di cache che non vengono aggiornati?

Il meccanismo di memorizzazione in cache di CQ aggiorna il timestamp di un file vuoto (specificato dall'attributo /statfile in dispatcher.log) per invalidare la cache. Così, quando una pagina viene replicata, il Dispatcher Flush Agent invia una richiesta al server web. Il Dispatcher riconosce la richiesta e apre il file .stat. Poi, cambia 1 byte nel file per aggiornare il timestamp. Questa modifica invalida la cache e causa lo svuotamento della cache da parte del dispatcher.

Soluzione

Come eseguo il debug se non funziona nulla?

Si potrebbe verificare uno scenario in cui il sito web visualizza solo pagine bianche.

Errore "Filter rejects" trovato nel log

[Tue Oct 16 13:47:18 2012] [D] [2880(1332)] cache-action for [/libs/wcm/core/content/siteadmin.infinity.json]: NONE
[Tue Oct 16 13:47:18 2012] [D] [2880(1532)] connected to render publish1 (127.0.0.1:4502)
[Tue Oct 16 13:47:18 2012] [D] [2880(1332)] Filter rejects GET /libs/wcm/core/content/siteadmin.infinity.json HTTP/1.1

Soluzione

La sezione filtro del dispatcher.any definisce le richieste gestite dal dispatcher.

Assicurati che il /tipo sia impostato su “allow” in modo da rendere possibile la visualizzazione delle pagine e del contenuto del sito web.

Nell'esempio di cui sopra, l'errore viene generato per il “siteadmin.infinity.infinity.json.”

Per le seguenti righe della sezione /filtri del dispatcher.any il tipo è impostato su “deny”

      # Deny content grabbing
      /0081 { /type "deny"  /glob "GET *.infinity.json*" }
      /0082 { /type "deny"  /glob "GET *.tidy.json*"     }
      /0083 { /type "deny"  /glob "GET *.sysview.xml*"   }
      /0084 { /type "deny"  /glob "GET *.docview.json*"  }
      /0085 { /type "deny"  /glob "GET *.docview.xml*"  }
Logo Adobe

Accedi al tuo account