2010-06-04 15 views
5

Mi aplicación Ruby on Rails consume alrededor de 129 MB de memoria. ¿Es esto normal?¿Cuánta memoria debe consumir una aplicación de Ruby on Rails?

tengo alrededor de 3.000 visitantes únicos al día, no tengo consultas complejas ...

Mi tabla de usuarios tiene unos 18k filas.

+0

¿Con qué servidor de aplicaciones se ejecuta? – x1a4

+0

Cuánta memoria tienes en tu servidor. 129 es bastante bajo en realidad. –

+0

Mestizo .. Tengo 4gb 'root @ veraserver01 [~] # libres totales utilizados buffers compartidos gratuitas en caché Mem: 3959880 189620 4149500 261532 1556064 0 -/+ buffers/cache: 2142284 2007216 de intercambio: 2096440 116 2096324' ¿Este es el problema? – Will

Respuesta

4

129 MB no me parece demasiado excesivo, lo que me parece más importante es que ese número crece con el tiempo?

si lo hace el problema es probablemente la forma en gran parte de su conjunto de datos que va a cargar en la memoria de una solicitud

la salida: http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/

en breif: Crear instancias de demasiados objetos de registro activo es un lugar donde los carriles La huella de memoria de la aplicación realmente crece.

Si en una solicitud, usted debe iterar sobre los 18 usuarios por alguna razón, y lo que es peor, iterar sobre todas sus publicaciones (o las asociaciones que tenga), estaría creando una tonelada de objetos, que (debería) limpiarse después de la solicitud, pero ruby ​​no devuelve la memoria al sistema después de que ha sido asignada.

+1

Gracias por su respuesta Dennis, tengo una pregunta sin embargo ... cuántos hay demasiados objetos de registro activos I't iterar sobre todos los 18k usuarios, pero sí actualizar 64 objetos de registro activo (uno por uno) cuando el usuario guarda una forma específica ... ¿debería actualizar en una sola consulta, entonces? Otra cosa es que mi aplicación de rieles sigue fallando ... dice: "[FATAL] no pudo asignar memoria" – Will

+1

64 consultas de actualización por guardar es excesivo –

+0

Depende de qué tan grandes sean los objetos, pero debería poder tratar con muchos miles de objetos cuando haces la actualización, ¿estás haciendo ": include =>" 's en los objetos? tratando de encontrar una forma más eficiente de hacerlo, en lugar de 64 actualizaciones de otros 64 objetos parece que sería inteligente. haciendo lo que específicamente hace que su aplicación se cuelgue? ¿Cuánta memoria tiene su servidor? ¿Estás fuera de eso? ¿Qué tan grande es la aplicación cuando se inicia/justo antes de que muera? en google el error fatal. una vez más, estos tipos son más inteligentes que yo. http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/ –

0

He visto aplicaciones de rieles que llegan hasta los 500mb. Estoy bastante seguro de que existen más grandes. Los visitantes únicos y las consultas de bases de datos no son la causa del uso de la memoria. Son los costosos y grandes cálculos en memoria en Ruby.

Pruebe AB probando algunos de esos métodos y vea qué tan alto es el uso de memoria. Eso podría resolver algunos problemas de memoria.