Pregunta

I tienen un proceso de pitón (Pilones webapp) que está en constante usando 10-30% de CPU. Voy a mejorar / tala de ajustar para obtener una idea de lo que está pasando, pero hasta entonces, ¿Hay herramientas / técnicas que permiten ver qué proceso pitón está haciendo, cuántos y qué hilos ocupado que tiene, etc?

Actualización:

  • registro de acceso configurado lo que demuestra que no hay peticiones en marcha, webapp se acaba de ralentí
  • ningún punto para enchufar paste.profile en cadena de middleware ya que no hay solicitudes, la actividad debe estar ocurriendo ya sea en la aplicación de web subprocesos de trabajo o servidor web parche
  • ejecutar el parche de la siguiente manera: "python -m -o cprofile archivo_salida / usr / bin / parche servir dev.ini" y la inspección de los resultados muestra que la mayor parte del tiempo se gasta en "posix.waitpid". Paster ejecuta webapp en subproceso, la actividad subproceso no es recogido por perfilador
  • mirar en; PasteScript piratería "servir" de comandos para que los subprocesos conseguirían perfilado

Otra actualización:

Después de mucho retoques, pegado de perfiles en varios lugares, así como familiarizarse con las entrañas PasteScript, descubrí que la carga de la CPU constante desaparece si la aplicación se inicia sin parámetro "--reload" (esta bandera le dice parche que se reinicie si los cambios de código , útil en el desarrollo), lo cual está bien en el entorno de producción.

¿Fue útil?

Solución

de perfiles podría ayudarle a aprender un poco de lo que está haciendo. Si su ordenar la salida por "tiempo", podrá ver qué funciones están chowing el tiempo de CPU, lo que debería dar algunos buenos consejos.

Otros consejos

Como se ha señalado, en --reload modo, el sistema de archivos Pega barre cada segundo para ver si alguno de los archivos cargados han cambiado. Si es así, a continuación, vuelve a cargar Pega el proceso. También puede indicar manualmente Pegar para controlar los módulos de código no Python para cambios si lo desea.

Puede cambiar el intervalo de recarga con la opción --reload-intervalo, esto reducirá el uso de la CPU cuando se utiliza --reload ya que barrerá con menos frecuencia.

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