Sto usando collectiveidea's delayed_job con la mia app Ruby on Rails (v2.3.8) e ho eseguito circa 40 processi in background con esso su una macchina Slicehost RAM da 8GB (Ubuntu 10.04 LTS, Apache 2).Lavori ritardati che perdono memoria?
Diciamo che ssh nel mio server senza operatori in esecuzione. Quando faccio il numero free -m
, vedo che generalmente utilizzo circa 1 GB di RAM su 8. Quindi, dopo aver avviato i lavoratori e aver atteso circa un minuto per il loro utilizzo da parte del codice, sono fino a circa 4 GB. Se torno tra un'ora o due, sarò a 8 GB e nella memoria di scambio e il mio sito Web genererà 502 errori.
Finora ho appena ucciso e riavviato i lavoratori, ma preferirei risolvere la radice del problema. qualche idea? Si tratta di una perdita di memoria? Oppure, come suggerito da un amico, devo trovare un modo per eseguire la garbage collection?
Suona come una perdita di memoria, ma può essere nel tuo codice eseguito da deleayed_job, non deve essere in delayed_job. qualche codice da recensire potrebbe aiutare. – jigfox
ricorda anche che 1.9 e 1.8 non restituiranno mai memoria al sistema operativo. – tliff