HTTPD process explorer

This uses output from a debugger to display information about a live or crashed httpd process.

This is based on my stacktraces.py project, on GitHub. 

1. Save process information in a file ...

a. You already know how to use gdb or pstack against a process or core file.

Save the output of gdb or pstack to a file.

For gdb, the critical command is thread apply all bt full.

b. You want to run a simple collector script to do the dirty work.

i. Download collector script

collect.py version 1.01

ii. Run collector script

This uses gdb, pstack, or another similar tool to create a debug log file containing information about an httpd process. As with using the tools directly, you must have permission to gather the data.

For an active httpd process

$ python collect.py --debuglog=OUTPUTFILE --pid=nnnn --exe=/path/to/httpd
    

For a core file from httpd

$ python collect.py --debuglog=OUTPUTFILE --corefile=/path/to/corefile --exe=/path/to/httpd
    

2. Upload file for analysis and display

Press the Upload button or drag and drop files onto it. (Files are not retained on the server.)

3. Explore process

(upload a file first)

4. Status, feedback ...

Thanks for looking. I'm all too aware that it is rather unrefined, but I have enjoyed developing it to this initial stage and look forward to improving the user interface and descriptions in the future.

The broad goals are as follows:

  • The collector script should help someone who is unfamiliar with gdb get useful information.
  • The process explorer should help someone who is unfamiliar with httpd determine at a high level what is going on in the server, and whether they have simply captured a view of a healthy server process when they were expecting otherwise.
  • The process explorer should be able to provide simple analyses such as third-party module XXX crashed, the crash was likely caused by XXX fixed in version YYY, etc.
  • The process explorer should be useful to developers for getting a quick view of problem data and drilling down on specific information without wading through the entire debugger output.

The httpd specifics are in a rules-based annotator which is applied separately from parsing the debugger output, so presumably it would be easy to provide an annotator for other programs.

Feedback

If you have any debugger log files with interesting output that could be explained better or which result in incorrect output by the program, please send them to me:

Jeff Trawick
info@emptyhammock.com

Please include Process explorer in the subject of your e-mail and provide the following information:

  • the debugger output being analyzed (as an attachment)
  • operating system and version where it was collected
  • version of Apache httpd, or name and version of other web server based on Apache httpd
  • for operational failures, provide the name and version of the web browser and show any incorrect output or other messages

This is a free service, so I may not be able to reply individually; however, any information you are able to provide about problems will be used to improve this software in the future.

If you'd like to sponsor specific enhancements or resolution of specific problems, please let me know.