¿Cómo evito el error "sin memoria"?

7

Actualmente estoy trabajando con Drupal 7, y tengo los siguientes módulos instalados, todos actualizados a su última versión respectiva:

  • Vistas - 7.x-3.0-beta3
  • CTools - 7.x-1.0-alpha4
  • Paneles - 7.x-3.0-alpha3
  • Reglas, ACL, Foro avanzado, Acceso al foro, Puntos de usuario, BUEditor

Sigo recibiendo "Error fatal de PHP: memoria insuficiente". El límite de mi servidor está al máximo permitido por mi proveedor (32 MB). Esos errores aparecen principalmente cuando interactúa con la página de módulos, pero también aparece para cualquier usuario que intente renovar su contraseña o editar nodos.

Por lo tanto, ¿tendría algún consejo sobre cómo reducir el uso de memoria?

PD: He notado que la mayoría de esos errores incluyen vistas y complementos de vistas .inc archivos. Pero también se trata de archivos .inc de los módulos y el sistema central ... Podría copiar algunos allí si lo desea.

nyoz
fuente

Respuestas:

6

Realmente no hay mucho que puedas hacer en este caso. Drupal 7 requiere bastante memoria, al igual que Vistas, Paneles, etc.

Si actualizar a un plan de alojamiento donde tienes al menos 128 MB no es una opción, al menos me aseguraré de que los siguientes módulos se mantengan deshabilitados:

  • Gestor de actualizaciones
  • Registro de base de datos
  • IU de campo
  • Vistas de la interfaz de usuario
  • Editor de paneles en el lugar
  • Cualquier otro módulo "UI"

Realice su desarrollo localmente y use el control de versión y las características para actualizar su caja de producción.

Alex Weber
fuente
2
Para notar que la IU de Vistas solo es necesaria al editar una vista existente o agregar una nueva vista; para el uso normal, la interfaz de usuario de Vistas no es necesaria, y las Vistas funcionarán normalmente incluso cuando ese módulo esté deshabilitado.
kiamlaluno
1
exactamente, lo mismo ocurre con cualquiera de los otros módulos "UI". Solo son necesarios para el desarrollo. Los campos funcionarán sin la interfaz de usuario, también lo hará Context, etc.
Alex Weber
44
Sin embargo, las vistas (no la interfaz de usuario) en sí tienen actualmente una gran huella. He estado trabajando en tratar de combatir la huella de memoria de Drupal recientemente y noté que las vistas cargan el caché del esquema y su propio caché de datos en cada página que muestra una vista. Eso puede significar fácilmente varios megabytes en un sitio con unos pocos módulos instalados (alrededor de 4 MB en mi instalación de prueba).
Berdir
Tengo que estar en desacuerdo con su recomendación de usar funciones: ese módulo es un gran problema de memoria. Sería mucho mejor usar ganchos de actualización para implementar cambios de configuración.
Felix Eve
anecdóticamente, después de configurar un sitio D7 existente en alojamiento compartido y encontrar muchos problemas de memoria usando vistas, descubrí que cambiar la versión de PHP de 7 a 5.6 fue de gran ayuda. No estoy seguro de la causa, pero había llegado al punto de permitir 1024M de memoria y todavía se estaba agotando mientras mostraba 16 elementos en una vista.
jammypeach
4

Como se enumera en los Requisitos del sistema de Drupal, Drupal Core necesita 32M para ejecutarse. Agregar cualquier módulo contribuido sin aumentar la memoria es una forma segura de encontrar este error.

Si el máximo de su servidor es de solo 32M, es hora de obtener un nuevo alojamiento.

tim.plunkett
fuente
Lo malo es que lo acabo de cambiar ... Creo que estoy atrapado con él durante al menos un año ...... Tengo que ver esto. :(
nyoz
Por cierto, mi hoster es 1 y 1 Francia. Leí en algunos foros de soporte de WordPress que recientemente actualizaron su límite de php a 90Mb. ¡Los llamaré el lunes ...! ;)
nyoz
2

Como se mencionó, la conclusión es que realmente necesita 128M. Otro punto a tener en cuenta es que si tiene el conjunto de imágenes funcionando, eso frecuentemente nos recuerda (en Drupal 6 al menos) que se requieren al menos 96M en ciertas circunstancias.

32M simplemente no va a cortarlo.

NikLP
fuente
0

Creo que usar el módulo Vistas es su mayor problema.

Vuelva a escribir todas las páginas que usan vistas con consultas personalizadas, elimine el módulo de vistas y, mientras estamos en ello, también elimine las Reglas (nuevamente, mueva toda la lógica al código) y su uso de memoria caerá hacia abajo.

Además, solo escribir archivos de plantilla y usar ganchos de preproceso eliminará la necesidad de que los paneles ahorren aún más memoria.

Estos no son pasos fáciles o rápidos de tomar y requieren un conocimiento profundo de Drupal, MySql y PHP, sin embargo, si el rendimiento es la prioridad número uno, esta es la mejor solución (y se ejecutará en 32M de memoria).

Víspera de felix
fuente