Pregunta

Tengo un pitón demonio que se ejecuta en la producción. Se emplea entre 7 y 120 hilos. Recientemente, el ejemplo más pequeño (7 hilos) comenzó a mostrar cuelga mientras que todos los otros casos no mostraron este tipo de problema. Colocación de strace a los espectáculos de procesos de Python que todos los temas están llamando FUTEX_WAIT_PRIVATE futex, por lo que es probable que estén tratando de bloqueo algo.

¿Cómo depurar un problema de este tipo?

Tenga en cuenta que este es un sistema de producción que va desde la memoria flash, por lo que las escrituras en disco se ven limitados, también.

¿Fue útil?

Solución

La observación fue ligeramente incorrecta. Un hilo no estaba llamando futex, pero en lugar de intercambio mientras sostiene el gil. Puesto que la máquina en cuestión es de hardware de bajo este intercambio se llevó muy largo y parecía ser un callejón sin salida. El problema subyacente es una pérdida de memoria. : - (

Otros consejos

Estimado Helmut, he el mismo problema con un colgante hilo en FUTEXT_WAIT_PRIVATE.

Parece que haya resuelto el problema. ¿Puede compartir más información acerca de la solución?

UPD:

El motivo del bloqueo fue finalmente encontrado (al menos para mi caso):. Que era debido a la importación de bloqueo en Python

Considere siguiente situación:

file1.py:

  

fichero2 importación

file2.py:

  

crear hilo "thread2"

     

ejecutar "thread2"

     

espera hasta terminar "thread2", con alguna función (digamos Go Go ())

     

def Go ():

     
    

some_module importación

         

....

  

A continuación, la importación en Go () colgaría ya que la importación está bloqueado en el hilo principal (por fichero2 importación) que no será liberado hasta que Go acabados (). El usuario verá en la caída en strace FUTEX_WAIT_PRIVATE.

Para evitar este lugar el código ejecutado durante la importación del archivo 2 en función de Do () y ejecutarlo después fichero2 importación:

  

fichero2 importación

     

file2.Do ()

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