py-spy 是一个用于 Python 应用程序性能分析的工具,它可以在不修改代码的情况下,实时监控和分析程序的 CPU 使用、内存占用等资源消耗情况。
使用过程中需要主要以下几个问题:
1. 需要root权限才能运行
2. 需要和监控目标进程使用相同的python解释器
3. 依赖于操作系统的SYS_PTRACE能力,如果没有设置SYS_PTRACE,会遇到"Permission denied (os error 13)" 错误
在独立机器环境下需要运行以下命令:
# 或者永久修改(需要重启)
sudo sysctl kernel.yama.ptrace_scope=0
容器运行时,需要设置--cap-add SYS_PTRACE开关:
docker run --cap-add SYS_PTRACE --pid=host -it your_image
或者在docker compose配置里加上以下配置:
privileged: true
cap_add:
- SYS_PTRACE
或者在K8S Deployment yaml里加上以下配置:
securityContext:
capabilities:
add: ["SYS_PTRACE"]