Tecnología

Inicio

Cómo solucionar problemas de un proceso fuera de control en Drupal

Cómo solucionar problemas de un proceso fuera de control en Drupal


Drupal es un sistema de código abierto de gestión de contenidos populares, pero a veces su fuerza es también su debilidad. Cualquiera puede ampliar la funcionalidad de Drupal o, si así lo desean, editar las secuencias de comandos básicos. Sin embargo, estos cambios pueden crear bucles en la lógica del software. En un intento de encontrar una solución, el software comienza a consumir más y más de los recursos del servidor hasta que no quede ninguna. En consecuencia, el sitio web se congela, y el hardware puede dejar de responder. Si esto le sucede a usted, usted necesita solucionar estos procesos descontrolados.

Instrucciones

Encontrar la causa

1 Deshacer los cambios recientes. Si eso aumenta la velocidad y la capacidad de respuesta de Drupal, el nuevo código contiene el problema.

2 Investigar los procesos del servidor. En una versión de Linux, ejecute "arriba" para ver lo que está consumiendo recursos. En una compilación de Windows, inicie el Monitor de procesos. Si el proceso más consuntivo es "mysql" o "mysqld", entonces usted sabrá que es la base de datos relacionada.

3 Revisar los registros de Drupal. Busque idénticos, mensajes repetidos. Mediante las rutas que se hace referencia, trabajar a través de los módulos de descubrir lo que les está provocando.

4 Compruebe los registros del servidor para ver si alguien está provocando artificialmente un proceso periódico (es decir., "Poormanscron") para consumir recursos en su servidor.

Implementar una solución

5 Retire bucles infinitos en el código contribuido. Por ejemplo, si usted tiene un "drupal_goto ();" función en la página que apunta a la página dos, y la segunda página contiene su propio "drupal_goto ();" volver a la página uno, va a crear un bucle infinito. Extracción de una de las funciones ofensivas eliminará el proceso fuera de control.

6 Simplificar las acciones intensivas de memoria (tales como búsquedas en las bases y string) en su código contribuido. Por ejemplo, una consulta de MySQL, que busca en cada nodo y devuelve una gran cantidad de datos puede consumir demasiada memoria. En este caso, limitar las consultas de MySQL para los tipos de nodos específicos o fechas de creación de nodos y restringir los datos devueltos.

7 Aumentar la asignación memory_limit de PHP. En algunas circunstancias, un proceso fuera de control puede no ser un problema después de aumentar la asignación de memoria. El Documento "Drupal aumento del límite de la memoria", ofrecido como parte de la guía de instalación de Drupal, es el recurso definitivo para hacer este cambio.

8 Prohibir que los forasteros que inicie un proceso intensivo de la memoria, como la búsqueda de indexación. Si el permiso de rejilla Drupal no ofrece suficiente granularidad, también se puede hacer esto mediante el empleo de los permisos de servidor y archivos basado en que utilizan el sistema operativo de la máquina host (es decir., "Chmod" para Linux). Como alternativa, utilice el bloqueo basado en IP en el software de servidor (como Apache) para evitar que otros interfieran con el rendimiento de su sitio.

Consejos y advertencias

  • Encontrar un proceso fuera de control en Drupal se parece mucho trabajo de detective. Trabajar lentamente y recoger pistas mientras investiga para encontrar la verdadera causa del problema.
  • El aumento de la asignación de memoria es una buena solución a corto plazo, pero con el tiempo la mayoría de los procesos descontrolados va a consumir esos recursos también. Además, siempre hacer una copia de seguridad de su sitio antes de hacer cambios!