2010-06-04 5 views
5

Mon application Ruby on Rails consomme environ 129 Mo de mémoire. Est-ce normal?Combien de mémoire devrait consommer une application Ruby on Rails?

je environ 3000 visiteurs uniques par jour, je n'ai pas de requêtes complexes ...

Ma table d'utilisateurs a environ 18k lignes.

+0

Sous quel serveur d'applications travaillez-vous? – x1a4

+0

Combien de mémoire avez-vous sur votre serveur. 129 est vraiment faible. –

+0

Mongrel .. i ont 4gb 'root @ veraserver01 [~] # gratuit total des tampons libres partagés utilisés en cache Mem: 4149500 3959880 189620 0 261532 1556064 -/+ tampons/cache: 2142284 2007216 Swap: 2096440 116 2096324' Est-ce le problème? – Will

Répondre

4

129MB ne me semble pas trop excessif, ce que je trouve le plus important, c'est que ce nombre augmente avec le temps?

si elle fait le problème est probablement combien de votre ensemble de données que vous chargez en mémoire sur une demande

départ: http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/

dans breif: instanciation trop d'objets d'enregistrement actif est un endroit où les rails l'empreinte mémoire de l'application grandit vraiment. Si dans une requête, vous deviez parcourir tous les utilisateurs de 18 Ko pour une raison quelconque, et pire, parcourir tous leurs messages (ou les associations que vous avez), vous instanciez une tonne d'objets, ce qui (devrait) être effacé après la demande, mais ruby ​​ne rend pas la mémoire au système après qu'il a été alocated.

+1

Merci pour votre réponse Dennis, j'ai une question cependant .. combien y a-t-il trop d'objets record actifs Je ne compte pas sur tous les utilisateurs de 18k, mais je mets à jour 64 objets enregistrement actifs (un par un) lorsque l'utilisateur économise une forme spécifique ... dois-je mettre à jour dans une seule requête alors? Une autre chose est que mon application rails se bloque ... il dit: "[FATAL] n'a pas réussi à allouer de la mémoire" – Will

+1

64 mises à jour requêtes par sauvegarde est excessive –

+0

Cela dépend de la taille des objets, mais vous devriez être en mesure de traiter avec plusieurs milliers d'objets. Lorsque vous faites la mise à jour, faites-vous ": include =>" sur les objets? Essayer de trouver un moyen plus efficace de le faire, plutôt que 64 mises à jour de 64 autres objets semble être intelligent. Qu'est-ce qui rend votre application plus vulnérable? combien de mémoire votre serveur a-t-il? en es-tu sorti? Quelle est la taille de l'application quand elle commence/juste avant qu'elle ne meure? dans googling cette erreur fatale. encore une fois, ces gars-là sont plus intelligents que moi. http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/ –

0

J'ai vu des applications de rails aller jusqu'à 500mb. Je suis sûr que les plus grands existent. Les visiteurs uniques et les requêtes de base de données ne sont pas la cause de l'utilisation de la mémoire. Ce sont les calculs on-memory coûteux et volumineux de Ruby. Essayez le test de certaines de ces méthodes et observez le niveau d'utilisation de la mémoire. Cela pourrait résoudre certains problèmes de mémoire.