Recentemente ho implementato un aggiornamento di Ruby da 2.0 a 2.1.5 alla mia applicazione Web Heroku e sto costantemente colpendo gli errori di quota di memoria ora, mentre con 2.0 e 1.9 questo mai è accaduto. C'è un limite di 512 MB per un normale Heroku Dyno e sto eseguendo 2 processi con Unicorn, insieme a un thread con Sidekiq su due dynos.L'utilizzo della memoria aumenta con Ruby 2.1 rispetto a Ruby 2.0 o 1.9
Dopo aver letto Phusion Passenger memory consumption increase from 1.9.3 (system) to 2.1.2 (RVM) on Ubuntu, ho provato a impostare la variabile di ambiente RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
a 0,9 per disabilitare il garbage collector generazionale e ha migliorato un po 'il consumo di memoria, ma non mi ha lasciato nulla vicino a quanto 2.0 o 1.9 consumato. Dato che la memoria in questo momento è la mia preoccupazione principale, mi piacerebbe vedere se posso risolvere questo problema con Ruby 2.1.x invece di tornare a 2.0.
Ecco alcuni grafici che dimostrano il problema:
A poco prima 2:00, ho declassato a Ruby 2.0.0-p598 Ruby 2.1.5 ei problemi di memoria sono stati risolti e rimase sotto il limite.
Poi dopo cercai aggiornamento a rubino 2.1.5 ma modificando la variabile di ambiente RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
a 0.9. Come puoi vedere, l'utilizzo della memoria è leggermente migliore rispetto al grafico 2.1.5 originale, ma viola ancora la quota di memoria.
molto interessante. Avrei pensato [questo] (https://www.omniref.com/blog/blog/2014/11/18/ko1-at-rubyconf-2014-massive-garbage-collection-speedup-in-ruby-2- dot-2 /) era correlato ma curioso di vedere quale sia la risposta qui. – Anthony
Anche in seguito al rilascio della versione 2.2, ma sono preoccupato che il loro focus sia in gran parte sui miglioramenti delle prestazioni rispetto ai miglioramenti del consumo di memoria, quindi sospetto che non sarà di grande aiuto. –
Alcuni primi tester hanno riportato un minore ingombro di memoria a causa dell'aggiornamento del GC in 2.0.0-preview1. Potresti voler controllare. – Lenart