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
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.