0

0

Python Parca 的持续性能剖析

舞夢輝影

舞夢輝影

发布时间:2026-02-19 13:49:50

|

254人浏览过

|

来源于php中文网

原创

parca 启动后看不到进程数据的根本原因是未正确 attach 目标进程或 /proc/[pid]/stack 权限受限;python 显示 [unknown] 源于符号缺失,需 python-dbg 或 py-spy 配合;高频采样易致卡顿,建议降低 --scrape-sample-rate 至 10~25,并在 k8s 中显式授予权限而非 privileged。

python parca 的持续性能剖析

Parca 启动后看不到进程数据

根本原因通常是 parca 没有正确 attach 到目标进程,或者目标进程未启用 /proc/[pid]/maps/proc/[pid]/stack 的读取权限。Linux 默认禁止非 root 用户读取其他进程的 stack 信息,而 Parca 默认以普通用户运行。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • 启动 parca 时加 --no-unwinder 快速验证是否是栈解析失败(会跳过符号解析,只采集采样点)
  • sudo sysctl kernel.perf_event_paranoid=-1 临时放开 perf 权限(生产环境慎用,可改用 -2 配合 perf_event_paranoid 配置文件)
  • 确认目标进程是用 debug 编译的(Python 需带 -g 或使用 python-dbg),否则 libunwind 无法还原调用栈
  • 检查 parca 日志里是否有 "failed to open /proc/[pid]/stack""no symbols found" 类错误

Python 进程在 Parca 里显示为 [unknown] 或 flat 地址

这是符号缺失的典型表现。Parca 依赖 DWARF 或 ELF 符号表还原函数名,但 CPython 解释器本身不带调试符号,且 Python 字节码无法直接映射到源码行——必须靠 py-spy 类机制做额外 hook。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • 不要指望直接跑 python script.py 就能在 Parca 里看到 def foo();得用 py-spy record -p [pid] --duration 30 --output profile.parca 导出兼容格式再导入
  • 若坚持用 Parca 原生采集,需用 python-dbg(Ubuntu/Debian)或从源码编译带 --with-pydebug 的 Python,并确保 libpython.so 的调试符号可用
  • parca--python-process-names 参数仅用于过滤进程名,不解决符号问题;别被名字误导

持续 profiling 导致 Python 进程卡顿或 OOM

Parca 默认每秒采样 100 次(--scrape-interval=1s + --scrape-sample-rate=100),对 Python 这种 GIL 争抢敏感、且每次采样都要触发 ptraceperf_event_open 系统调用的语言,开销远高于 Go/C++。

phpList
phpList

phpList提供开源电子邮件营销服务,包括分析、列表分割、内容个性化和退信处理。丰富的技术功能和安全稳定的代码基础是17年持续开发的结果。在95个国家使用,在20多种语言中可用,并用于去年发送了250亿封电子邮件活动。您可以使用自己的SMTP服务器部署它,或在http://phplist.com上获得免费的托管帐户。

下载

实操建议:

立即学习Python免费学习笔记(深入)”;

  • --scrape-sample-rate 降到 1025,多数定位场景已够用;高频抖动问题才考虑升回 50
  • 禁用 --enable-profiling 下的 memory 类型(--disable-profiling-memory),Python 的堆分配追踪开销极大,且 Parca 当前对 Python 的内存 profile 支持仍不稳定
  • 避免在容器中用 --privileged 启动 Parca,改用明确添加 CAP_SYS_ADMINCAP_SYS_PTRACE 的方式,减少内核调度干扰

如何让 Parca 和 Python 应用共存于 Kubernetes

K8s 默认限制 ptraceperf_event_open,且 Pod 内多进程共享 PID namespace 时,Parca 可能误采 sidecar 或 init 容器。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • 在 Deployment 的 securityContext 中显式添加:capabilities: { add: ["SYS_ADMIN", "SYS_PTRACE"] },而不是整个 privileged: true
  • --pid-filter 配合正则(如 --pid-filter='^/app/venv/bin/python.*$')精准匹配主应用进程,避开 shcurl 等短命进程干扰
  • 把 Parca 的 --storage-path 挂载到空目录(emptyDir),别和应用日志共用 PVC,避免 I/O 争抢拖慢 profiling

真正难的不是启动 Parca,而是让 Python 的调用栈在采样流里稳定还原出来——它依赖解释器构建方式、内核参数、容器权限、符号路径四个环节同时对齐。少一个,看到的就是一串 0x7f...4a2

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

452

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

181

2023.10.30

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

419

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

594

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

419

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

594

2023.08.10

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

27

2025.12.22

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

660

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 4.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号