Hace PHP proc_nice dejar de Apache de los hilos en la nueva configuración de la prioridad?

StackOverflow https://stackoverflow.com/questions/1849421

Pregunta

Cuando la ejecución de proc_nice(), es realmente agradable ing Apache hilo?

Si es así, y si el usuario actual (no super usuario) no puede modificar a su prioridad original está matando el Apache hilo adecuado (apache_child_terminate) en un Apache 2.0 x server?

El problema es que estoy tratando de limitar el impacto de una aplicación que permite al usuario ejecutar Ad-Hack consultas.Las Consultas pueden ser masiva y la resultante de la transformación de los datos requiere una gran cantidad de Memoria y CPU.

Ya he re-escrito el proceso a ser más corriente basada - ayudando con el consumo de memoria, pero también me gustaría que el proceso se ejecute en una prioridad más baja.Sin embargo yo no puedo dejar el Apache hilo de baja prioridad, como tenemos un montón de alta prioridad en los servicios web que se ejecutan en este mismo cuadro.

TIA

¿Fue útil?

Solución

En ese tipo de situación, una solución si a menudo para no hacer ese tipo de trabajo pesado dentro de los procesos de Apache, pero :

  • ejecutar un proceso de PHP, usando algo como shell_exec, por ejemplo -, esto es si se debe trabajar en modo síncrono (es decir, si no puede ejecutar la tarea de un par de minutos más tarde)
  • empuje la tarea a un sistema FIFO, e inmediatamente devuelve un mensaje al usuario diciendo: "tu tarea será procesada pronto"
    • y tiene algún otro proceso (lanzado a través de un crontab cada minuto, por ejemplo) comprobar que la cola FIFO
    • y el procesamiento de él, hay algo en la cola
    • Ese proceso, en sí mismo, se puede ejecutar en low priority mode.


Tan a menudo como sea posible, especialmente si el pesado cálculos tomar algo de tiempo, me iría a por la segunda solución :

  • Permite a los usuarios obtener algunos comentarios inmediatamente :"el servidor ha recibido su solicitud, y el proceso es pronto"
  • No mantener los Apaches de los procesos de "trabajo" por mucho tiempo :el material pesado se hace por otros procesos
  • Si, un día, se necesita de una cantidad de potencia de procesamiento que un servidor ya no es suficiente, este tipo de sistema será más fácil escala :sólo añadir un segundo servidor que va a retomar a partir de la misma cola FIFO
  • Si su servidor es realmente demasiado cargado, puede detener el procesamiento de la cola, al menos por algún tiempo, así que la carga puede mejorar, por ejemplo, esto puede ser útil si su crítica servicios web se utilizan mucho en un marco de tiempo específico.


Otro (de aspecto agradable, pero yo no lo he probado todavía) la solución sería utilizar algún tipo de herramienta como, por ejemplo, Gearman :

Gearman proporciona una aplicación genérica marco de la granja a cabo el trabajo a otros máquinas o procesos que son mejores idónea para realizar el trabajo.
Permite para hacer el trabajo en paralelo, a la carga balance de procesamiento, y para llamar funciones entre las lenguas.
Puede ser se utiliza en una variedad de aplicaciones, de alta disponibilidad de los sitios web el transporte de replicación de base de datos eventos.
En otras palabras, es el sistema nervioso por cómo distribuidas el procesamiento se comunica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top