Piazzale Italia

Moodle Cron Bloccato

 
Immagine Angelo Nardi
Moodle Cron Bloccato
 

Salve,

sto utilizzando la versione di Moodle 2.9.2+ (Build: 20151023) su Windows Server 2012 R2 Datacenter Edition con PHP versione 5.5.22 e DB Microsoft Sqlserver Standard 2012.

Il mio problema è che il CRON, che viene attivato dal task manager di Windows, parte e rimane blocccato rallentando il sito fino a renderlo inutilizzabile. Se blocco la schedulazione del CRON invece non ci sono problemi.

Ho provato anche a lanciare il CRON da riga di comando ma il risultato è lo stesso.

Ulteriori informazioni che posso darvi sono:

1) Al lancio del CRO, sia schedulato sia manuale, nel file di log del cron  ho solo le seguenti righe:

Server Time: Thu, 01 Feb 2018 21:19:00 +0100

Execute scheduled task: Pulizia sessioni vecchie

... started 21:19:00. Current memory use 11.1MB.


2) Al lancio del CRO, sia schedulato sia manuale, nel task manager appaiono 3/4 nuovi processi:

cmd.exe, conhost.exe, php.exe e taskeng.exe (solo schedulato) il cui user è l'utente creato appositamente per il CRON e che ha massimi privilegi sulle cartelle Moodle, MoodleData e Cron_Moodle e sue sottodirectory.

Tali processi non terminano mai, li ho lasciati per una notte intera e solo al loro "teminazione" manuale nel log del PHP ho trovato queste informazioni (nessuna informazione era stata scritta al loro start)

[02-Feb-2018 08:40:10 Europe/Rome] PHP Warning:  session_regenerate_id(): Session object destruction failed in C:\inetpub\moodle\lib\classes\session\manager.php on line 463

[02-Feb-2018 08:40:11 Europe/Rome] PHP Warning:  session_regenerate_id(): Session object destruction failed in C:\inetpub\moodle\lib\classes\session\manager.php on line 463

[02-Feb-2018 08:40:11 Europe/Rome] PHP Warning:  session_regenerate_id(): Session object destruction failed in C:\inetpub\moodle\lib\classes\session\manager.php on line 463


3) Una cosa strana che ho notato è che nelle proprietà della cartella CRON_Moodle la voce Attributes risulta spuntata con accanto "(Only applies to files in folder)"


Vi sarei grato potessi ricevere qualche informazione per risolvere il mio problema, resto inoltre disponibile per fornire qualsiasi altra informazione o effettuare prove.

Grazie

Angelo






 
Media dei voti:  -
Immagine Matteo Scaramuccia
Re: Moodle Cron Bloccato
Core developersParticularly helpful MoodlersPlugin developers

Ciao Angelo,
non ha mai funzionato o ha smesso da un certo punto in poi?

Per ovviare alla mancanza di messaggi utili a capire cosa stia succedendo devi attivare il debugging di Moodle nella modalità DEVELOPERhttps://docs.moodle.org/29/en/Debugging oppure direttamente $CFG->showcrondebugging = true; in config.php, e quindi condividerli qui, eventualmente rimuovendo informazioni sensibili da essere esposte qui in Community.

HTH,
Matteo

 
Media dei voti: Utile (1)
Immagine Angelo Nardi
Re: Moodle Cron Bloccato
 

Salve Matteo,

le due opzioni che mi segnali sono già entrambe attive ma non ho altre informazioni di debug oltre quelle che ho già fornito.

Una cosa forse importante che ho dimenticato di riportate è che il sito ha cambiato recentemente il suo URL, fermo restando l'indirizzo IP e il server su cui si trova, anche le directory Moodle, MoodleData e Moodle_Cron sono invariate, e non so se questo può essere la causa del problema. Prima del cambio di URL il cron funzionava perfettamente.

Il sito, se non è attivo il cron, funziona perfettamente e questo mi fa pensare che le modifiche apportate nel config.php dell'URL ($CFG->wwwroot = www.nuovodominio.it) del sito siano corrette, non so però se occorre fare altre modifiche. Ovviamente anche su IIS è stato configurato il nuovo URL.

Ho da poco effettuato l'esecuzione del CRON da remoto ma anche in questo caso il risultato è lo stesso, il browser resta in attesa della risposta del server, sul log del php non ci sono messaggi, il sito, chiamando da un altro browser non risponde ma il file del log del CRON non viene generato.

Considerando la situazione che si ha quando il CRON è lanciato manualmente o da scheduler nella quale sul log si hanno le righe

Server Time: Thu, 03 Feb 2018 16:19:00 +0100

Execute scheduled task: Pulizia sessioni vecchie

... started 16:19:00. Current memory use 11.1MB.

quale operazione sta eseguendo o dovrebbe eseguire a questo punto il CRON? partendo da quest'ultima si potrebbe capire cosa lo sta bloccando? Chiedo questo perché dopo il lancio del CRON l'unico modo per sbloccare il sito è quello di killare il processo avviato dallo scheduler, infatti se mentre il CRON è in esecuzione si cerca di accedere al sito questo non risponde ma al kill del processo si ha immediatamente la pagina.

Grazie per eventuali indicazioni

Angelo


Immagine Matteo Scaramuccia
Re: Moodle Cron Bloccato
Core developersParticularly helpful MoodlersPlugin developers

Ciao Angelo,
la prima cosa che farei è usare il tool di "replace" di Moodle per verificare che non ci siano nel sistema puntamenti al vecchio dominio: https://docs.moodle.org/29/en/Search_and_replace_tool.

Il fatto che si fermi tutto cioè che IIS non sia in grado di terminare le lavorazioni per inviare la pagina mi da un indizio ma è ancora troppo poco per correlarlo ad una causa in modo da eliminarla.

Prova a fare la ricerca e la sostituzione per il vecchio dominio e vediamo se risolve oppure no.

HTH,
Matteo

Immagine Angelo Nardi
Re: Moodle Cron Bloccato
 

Buongiorno Matteo,

credo di essere riuscito a capire quale è il problema, la tabella mdl_sessions contiene più di 3 milioni di record, quindi qualunque operazione che la coinvolge va prima o poi in timeout. Ho problemi anche da SQL Management a fare operazioni.

Probabilmente il CRON non deve aver mai funzionato correttamente.


La domanda a questo punto è banale è possibile direttamente da SQL eliminare record dalla tabella magari lasciando i più recenti? 

Grazie


Angelo

Immagine Matteo Scaramuccia
Re: Moodle Cron Bloccato
Core developersParticularly helpful MoodlersPlugin developers

Ciao Angelo,
eccolo il lock Sì! La pulizia delle sessioni "morte" e l'impossibilità di procedere alla login fino a quando non sia stata terminata.

Personalmente toglierei la configurazione di usare il database per le sessioni e passarei alla configurazione di default che è su file: https://docs.moodle.org/29/en/Session_handling#Files.
Puoi controllare in Site administration > Server > Session handling se hai una voce dbsessions, spuntata e spuntarla... ATTENZIONE sarai sconnesso - e con te TUTTI gli utenti in quel momento connessi - e dovrai rifare la login.

Per la cancellazione, fai prima un backup e poi puoi rimuovere i record meno recenti, tipo più vecchi di una settimana perché saranno relativi a utenti sicuramente non più connessi.

Prima di cambiare configurazione, dovresti ragionare come mai hai la sessione su DB: probabilmente questa istanza deriva da una versione precedente, aggiornata nel tempo (dalla 2.6 infatti il default è cambiato: MDL-31501).

Nota: il passaggio a gestire le sessioni su file scaricherà il tuo database server e il sistema risulterà più reattivo sotto alta concorrenza.

HTH,
Matteo

Immagine Angelo Nardi
Re: Moodle Cron Bloccato
 

Grazie Matteo,

procederò quanto prima a pulire le sessioni morte e modificare la configurazione delle sessioni.

Il sito ora alla 2.9 e nato come 2.5 con un primo upgrade alla 2.7 e successivamente alla 2.9 è per questo che le sessioni sono sul db.

Appena avrò effettuato le operazione ti farò sapere se è tutto a posto.


Angelo