Question

Mes sites rails cheminent Mongrel, je suis un problème avec la quantité de mémoire utilisée. Mes processus de rubis-bin utilisent jusqu'à environ 66 Mo de mémoire résidente. Comment puis-je réduire la quantité de mémoire utilisée par des rails?

Il est pas très économique d'avoir de nombreux serveurs de rails en cours d'exécution sur une seule machine si elles mangent la mémoire à ce rythme. Mes processus php5 FCGI assis à entre 15-25 MB.

Je suis assez familier avec RoR, serait en utilisant l'aide JRuby? Tous les commentaires utiles dans la réduction de l'empreinte mémoire et en augmentant les performances sont plus que bienvenus.

Était-ce utile?

La solution

Vous pouvez regarder Phusion passagers et Ruby Enterprise Edition , ce qui est la configuration standard de facto pour Rails applications ces jours-ci. L'un de ses objectifs est Austérité mémoire. Il est également plus simple que d'avoir un tas de bâtards.

Autres conseils

Si vous n'êtes pas lié à apache autre chose, je voudrais aussi essayer nginx avec passager Phusion. Si vous êtes préoccupé par l'utilisation de la mémoire, vous devriez voir une plus petite empreinte de nginx que apache, et la dernière version de passagers téléchargerez, compiler et installer nginx pour vous avec des maux de tête minimes.

Vous pouvez également remplacer votre processus bâtarde avec mince qui est plus efficace et a récemment été patché dans sa collection Garbage (à travers eventmachine), pour le rendre encore mieux.

Nous utilisons groupe mince derrière frontends nginx avec de beaux résultats.

Je ne voudrais pas aller jusqu'à dire des passagers est la norme de facto, mais il est gagner beaucoup de traction. Nous venons de Nginx + passés passagers, et notre application rubis (à savoir Mongrels par rapport à passagers) l'empreinte mémoire est passée d'environ 450 Mo à 295MB. Il peut tomber moins, en tant que passager va tuer procs si elles ralenti (ce qui est configurable), mais bien sûr, si vous obtenez le trafic et il est en utilisant toutes les instances que vous l'avez configuré pour, alors ils utilisent de la mémoire en conséquence .

Notez que nous n'utilisons pas Ruby Enterprise Edition dans notre configuration encore (principalement parce qu'il est pas encore disponible au Engine Yard), mais nous voyons encore une plus petite empreinte mémoire. La mémoire est la principale raison initiale, nous avons fait l'interrupteur, mais il y a d'autres avantages, tels que plus rapide et une configuration plus facile pour mise à l'échelle vers le haut ou vers le bas, et ainsi de suite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top