Domanda

Ho un Python daemon in esecuzione in produzione. Impiega tra 7 e 120 fili. Recentemente il più piccolo istanza (7 fili) ha iniziato a mostrare si blocca, mentre tutti gli altri casi non hanno mostrato questo tipo di problema. Collegamento strace agli spettacoli di processo python che tutte le discussioni stanno chiamando futex FUTEX_WAIT_PRIVATE, in modo che siano probabilmente cercando di blocco qualcosa.

Come si eseguire il debug di un tale problema?

Si noti che questo è un sistema di produzione che va dalla memoria flash, in modo da scritture su disco sono limitate, anche.

È stato utile?

Soluzione

L'osservazione è stata leggermente corretta. Un thread non stava chiamando futex, ma invece scambiando mentre si tiene la gil. Dal momento che la macchina in questione è basso hardware questo scambio ha preso molto a lungo e sembrava essere una situazione di stallo. Il problema alla base è una perdita di memoria. : - (

Altri suggerimenti

Caro Helmut, ho lo stesso problema con uno appeso filo su FUTEXT_WAIT_PRIVATE.

Sembra che tu abbia risolto il problema. Puoi condividere ulteriori informazioni sulla soluzione?

UPD:

Il motivo del blocco è stato finalmente trovato (almeno per il mio caso):. Esso è dovuto a blocco import in Python

Si consideri seguente situazione:

file1.py:

  

import file2

file2.py:

  

creare thread "Thread2"

     

eseguire "Thread2"

     

attendere fino a completare "Thread2" con qualche funzione (diciamo Go Go ())

     

def Go ():

     
    

import qualche_modulo

         

....

  

Qui l'importazione in Go () sarebbe riagganciare in quanto l'importazione è bloccata nel thread principale (con l'importazione file2) che non sarà rilasciato fino Go) finiture (. L'utente vedrà in strace Aspetta FUTEX_WAIT_PRIVATE.

Per risolvere questo posto il codice eseguito durante l'importazione di file2 in funzione Do () ed eseguirlo dopo file2 importazione:

  

import file2

     

file2.Do ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top