2010-03-08 5 views
9

Tengo una función en mi CMS que permite que un usuario cargue un archivo zip lleno de imágenes y el servidor las extraerá e insertará en una galería de imágenes. Me he dado cuenta de que esto agota la CPU bastante severamente y hace que otras solicitudes disminuyan.Ejecución de tareas en segundo plano con menor prioridad de CPU

Estoy pensando en usar el complemento de retraso de trabajo para delegar cada adición de imagen en el fondo, pero también quiero darle a ese proceso una prioridad de CPU menor para que no empantane el servidor.

Tengo mucha confianza en la parte demorada del ejercicio, pero la parte de aceleración es donde estoy atascado. ¿Hay alguna manera de reducir la prioridad de una llamada a un método?

Es el cambio de tamaño de la imagen lo que causa que la CPU mastique.

Todas las ideas agradables :)

Respuesta

6

Si el CMS está ejecutando en el sistema Linux, entonces usted puede hacer esto con el comando "agradable". "agradable" iniciará un proceso con una prioridad más baja. La forma más sencilla de usarlo es simplemente poner bien frente a su comando. Así que si se ejecuta el comando como

unzip uploaded-images.zip

lugar ejecutar

nice unzip uploaded-images.zip

Esto hará que el proceso de descompresión para obtener más baja prioridad de la CPU, dejando que otros procesos se ejecutan en primer lugar. Consulte man page para obtener más opciones, por ejemplo, cómo ajustar el nivel de prioridad.

+0

Gracias por eso, también me encontré con esto en google: http://stackoverflow.com/questions/1340142/preventing-delayed-job-background-jobs-from-consuming-too-much-cpu-on-a -single-se –

Cuestiones relacionadas