Interrompere un'esecuzione Cron rimasta appesa e mai conclusa

12 contenuti / 0 new
Ultimo contenuto
Interrompere un'esecuzione Cron rimasta appesa e mai conclusa

Vi è mai capitato di ritrovarvi un'esecuzione cron appesa da 10ore (nel senso che si è incartato e non viene sbloccata)?

Come fare ad intervenire manualmente, al fine di poter ripartire con una nuova esecuzione del cron?

In genere quando capita, dopo un pò muore ed è possibile effettuare una nuova operazione di cron, ma stavolta invece sembra restare appesa.

suggerimenti?

...mm
provato a fare un po di refresh?
e/o tornare dentro e rifare?

credo sia proprio un fattore (anche) legato alla potenza/tipo di servizio e della quantità di memoria php del server : un sito me lo sono fatto cambiare come servizio perchè andava sempre in errore dove aver aggiunto alcuni moduli (32 mb ad es. son pochi).

Non è quello il problema. Quel tipo di problemi per il momento non ci sono.

Sono andato a cercare nella tabella variable ed ho trovato una riga:
cron_semaphore i:1285620986;
La data unix convertita indica: Mon, 27 Sep 2010 20:56:26 GMT

ed ho trovato anche questa riga:
cron_last i:1285589135;
La data unix convertita indica: Mon, 27 Sep 2010 12:05:35 GMT

Adesso però la cron_semaphore sembra essere svanita.

E' molto interessante il messaggio che adesso restituisce drush

WD cron: Cron has been running for more than an hour and is most likely stuck. [error]
Esecuzione di cron fallita. [error]
An error occurred at function : drush_core_cron

Mentre prima ti diceva che non era possibile rieffettuare il cron mentre era ancora attiva una sessione di cron, adesso ti dice che il cron è in esecuzione da più di un ora e che è più probabile che sia bloccato.

Potrei dedurre che dopo un certo tempo stabilito... drupal indichi la sessione di cron non valida e la sblocchi automaticamente, rimuovendo il giusto semaforo, il giusto lock, dal DB o dal filesystem. Questa però è una ipotesi molto ottimistica.

Vedremo domani che capiterà.

Adesso drush mi dice

WD JobScheduler: Last cron process did not finish.
e dopo un pò ha restituito
Cron run successfully.

Beh!... quindi l'ipotesi molto ottimistica indicata prima era nella sua complessità, corretta.

In questo particolare sito, l'esecuzione del cron impiega un bel pò di tempo in + rispetto agli altri. Non so xkè forse x via dei molti Feed Nodes.

Sarebbe molto interessante capire il funzionamento del CRON e sarebbe anche molto utile che drush consentisse di bloccare l'esecuzione del cron quando questo ci sembra inconsistente e si protrae per tantissimo tempo.

drush viene usato via shell ?
è un modulo?

jscm wrote:
Non è quello il problema. Quel tipo di problemi per il momento non ci sono.

Sono andato a cercare nella tabella variable ed ho trovato una riga:
cron_semaphore i:1285620986;
La data unix convertita indica: Mon, 27 Sep 2010 20:56:26 GMT

ed ho trovato anche questa riga:
cron_last i:1285589135;
La data unix convertita indica: Mon, 27 Sep 2010 12:05:35 GMT

Adesso però la cron_semaphore sembra essere svanita.

Si solitamente quando il CRON si blocca ti viene comunicato attraverso il Semaphore, credo che l'unica soluzione è cercare di capire cosa lo fa bloccare, tempo addietro capitava anche a me, ma ho si è risolto semplicemente facendo l'update dell'intero DRUPAL e moduli correlati...

Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.

WeBrain Solution | Pillsofbits Of Bits

Per evitare questi problemi puo essere utilizzato questi moduli http://drupal.org/project/job_queue

http://drupal.org/project/multicron

Basta qualche secondo off del server/spazioweb se il cron ha tanti processi da eseguire.

----------------------------------------
bI’Iqchugh’ yIvang !
Se sei triste, agisci!

Proverbio Klingon

johnny13 wrote:
Per evitare questi problemi puo essere utilizzato questi moduli http://drupal.org/project/job_queue

http://drupal.org/project/multicron

Basta qualche secondo off del server/spazioweb se il cron ha tanti processi da eseguire.

Non mi sono necessari questi moduli xkè nel mio caso tutte le Cron Run vengono eseguite esternamente ai siti, tramite uno script apposuito ed una riga in crontab.

Lo script completa tutti i processi di cron lanciati singolarmente, in circa 5min.

Il problema qui discusso si è presentato a seguito dell'introduzione di un nuovo script che lanciava i processi di cron usando drush.

Succede qualcosa di strano con drush, che non ho ancora inquadrato e che si presenta occasionalmente, che a volte rende una run di cron lenta.

Vista la situazione sono tornato allo script originario che lancia il cron tramite una wget -O - q.

I miei problemi al momento sono quelli di rendere il log dei processi di cron molto verbose tramite crontab. Questo perchè il crontab non mi consente di far loggare l'stdout di drush o di wget, richiamati all'interno dello script.

Ogni suggerimento in merito è bene accetto.

Si.. però anche se il comando e esterno, sempre su la machina "fisica" dove risiede il sito cron e processato.

----------------------------------------
bI’Iqchugh’ yIvang !
Se sei triste, agisci!

Proverbio Klingon

johnny13 wrote:
Si.. però anche se il comando e esterno, sempre su la machina "fisica" dove risiede il sito cron e processato.

Quindi? ... non ti seguo!
In ogni caso è normale che debba essere eseguito sulla macchina fisica.