[Twisted-Python] finding out what's blocking the reactor

Glyph glyph at twistedmatrix.com
Wed May 15 00:32:49 MDT 2019



> On May 14, 2019, at 8:39 AM, Scott, Barry <barry.scott at forcepoint.com> wrote:
> 
> On Monday, 13 May 2019 15:26:01 BST Chris Withers wrote:
>> Hi All,
>> 
>> On some busy instances of the app I'm working with/on, we see websocket
>> connections being dropped due to not ping/ponging in time, I'm fairly
>> sure this is as a result of some user-written callbacks blocking the
>> reactor for long periods of time (seconds...).
>> 
>> What's the best way to debug a twisted application to find out what's
>> blocking the reactor?
> 
> Is the process CPU bound or IO bound?
> 
> If CPU bound then cprofile or the tool Glyph mentioned would help.

The tool I mentioned (vmprof) is not a CPU profiler, and will help with I/O bound tasks as well.  cProfile can also tell you about wall clock time, but has other limitations that might not make it suitable for this.

-g

> This advice is from a Linux perspective.
> 
> If its IO bound the you may be waiting on a blocking operation.
> You could use strace on the process to see what its doing.
> 
> As its hung for seconds you could connect gdb to the process and see a python 
> backtrace using the py-bt command. You are likely to catch the offending code.
> 
> The normal bt command will show you what the last python command it calling.
> 
> You could adding logging to your code to show the time of callback entry and 
> exit.
> 
> If all else fails patch the twisted code to time callbacks and report the slow 
> ones.
> 
> Barry
> 
>> 
>> cheers,
>> 
>> Chris
>> 
>> _______________________________________________
>> Twisted-Python mailing list
>> Twisted-Python at twistedmatrix.com
>> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> 
> 
> 
> 
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python




More information about the Twisted-Python mailing list