dump nginx memory

# Set pid of nginx master process here

# generate gdb commands from the process's memory mappings using awk
cat /proc/$pid/maps | awk '$6 !~ "^/" {split ($1,addrs,"-"); print "dump memory mem_" addrs[1] " 0x" addrs[1] " 0x" addrs[2] ;}END{print "quit"}' > gdb-commands

# use gdb with the -x option to dump these memory regions to mem_* files
gdb -p $pid -x gdb-commands

# look for some (any) nginx.conf text
grep worker_connections mem_*
grep server_name mem_*

You should get something like “Binary file mem_086cb000 matches”. Open this file in editor, search for config (e.g. “worker_connections” directive), copy&paste. Profit!

Update: This method isn’t entirely reliable. It’s based on assumption that nginx process will read configuration and don’t overwrite/reuse this memory area later. Master nginx process gives us best chances for that I guess.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.