apisix-profiler
apisix-profiler copied to clipboard
WIP fixing profiling nginx in a container
This is a draft, not ready for review yet.
I was attempting to use this tool to profile an nginx instance running in a container, but many of the ELF helpers don't understand how to deal with containerized paths.
The fix for this is relatively simple, we just prepend /proc/PID/root
to the paths, to make them relative to the target pid's mount namespace.
Since the helpers don't take a pid
, for now I've hacked it by adding a static variable and storing this early on when we are looking for the lib / binary to profile.
After these changes, I am able to profile an nginx instance running in a container, provided I have access to the root pid namespace.
I also discovered an issue with the makefile, which I will PR separately but is currently included in this branch.
- [ ] Look into cleaner way to obtain the PID than storing in a static variable
- [ ] Create mount namespace helpers rather than duplicating the code
- [ ] Tests?
- [ ] Whitespace fixes / formatting
- [ ] Create separate PR for makefile fix