CentOS中Python性能监控方法
导读:CentOS 中 Python 性能监控方法 一 系统级监控工具 使用系统自带与常用开源工具快速观测整体资源与进程行为,适合定位瓶颈的大方向与异常波动。 常用工具与用途一览: 工具 作用 典型用法 top / htop 实...
CentOS 中 Python 性能监控方法
一 系统级监控工具
- 使用系统自带与常用开源工具快速观测整体资源与进程行为,适合定位瓶颈的大方向与异常波动。
- 常用工具与用途一览:
| 工具 | 作用 | 典型用法 |
|---|---|---|
| top / htop | 实时查看进程与 CPU/内存 占用 | top;htop(更友好) |
| vmstat | 虚拟内存、CPU、IO 等综合统计 | vmstat 1 |
| iostat | 磁盘 I/O 吞吐与延迟 | iostat -x 1 |
| free | 内存与缓存/交换分区使用 | free -m |
| netstat / ss | 网络连接与套接字统计 | ss -s |
| dstat | 多功能资源统计(可替代 vmstat/iostat/netstat) | dstat -ta 1 |
| nmon | 综合资源监控并支持导出数据 | nmon -c 60 -s 10(示例) |
| Glances | 基于 psutil 的跨平台监控,支持 Web | glances;glances -w |
- 安装与快速上手示例(以 CentOS 7/8 为例):
- 安装 Glances(EPEL 源):sudo yum -y install epel-release & & sudo yum -y install glances
- 启动:glances(终端);glances -w(Web 界面,默认端口 61208)
- dstat:pip install dstat;dstat -ta 1
- nmon:下载二进制至 /usr/local/bin/nmon 并赋权;nmon -c 60 -s 10(采集 60 次、间隔 10 秒)
二 应用内与代码级监控
- 在 Python 进程内采集指标,便于与业务埋点结合、推送到时序库或做历史回放分析。
- 常用方案与示例:
- psutil(系统资源):获取 CPU、内存、磁盘、网络 等,适合嵌入业务监控与告警。
- 示例:
- import psutil
- cpu = psutil.cpu_percent(interval=1)
- mem = psutil.virtual_memory().percent
- disk = psutil.disk_usage(‘/’).percent
- net = psutil.net_io_counters()
- 示例:
- Prometheus + Grafana(指标化与可视化):
- 安装 prometheus_client 并在应用中暴露 /metrics 端点,Prometheus 抓取,Grafana 展示。
- 示例:
- from prometheus_client import start_http_server, Counter
- start_http_server(5000)
- requests_total = Counter(‘requests_total’,‘Total HTTP requests’)
- requests_total.inc()
- PyMetrics(轻量指标与渲染):
- 适合快速做控制台/文本可视化与自定义渲染
- psutil(系统资源):获取 CPU、内存、磁盘、网络 等,适合嵌入业务监控与告警。
三 性能剖析与瓶颈定位
- 当需要精确到函数/代码行级别的热点与内存问题时,使用剖析器与可视化工具。
- 工具与用法要点:
- cProfile(标准库):统计函数调用次数与耗时,适合整体热点定位。
- 示例:python -m cProfile -o profile.prof app.py;后续用 pstats/snakeviz 分析
- line_profiler:逐行耗时,定位具体代码行瓶颈。
- 示例:@profile 装饰目标函数;kernprof -l -v app.py
- memory_profiler:逐行内存分配,定位内存热点与泄漏线索。
- 示例:@profile 装饰;python -m memory_profiler app.py
- snakeviz:cProfile 结果的交互式可视化(Web)。
- 示例:snakeviz profile.prof
- vprof:结合 CPU/内存的可视化分析。
- 示例:python -m vprof -c app.py
- py-spy(采样分析器,无需修改代码):对运行中的 Python 进程采样,生成 火焰图/SVG。
- 示例:py-spy record -o profile.svg – your_script.py
- cProfile(标准库):统计函数调用次数与耗时,适合整体热点定位。
四 落地实践与排障流程
- 建议按“由外到内、由粗到细”的顺序排查:
- 先用 top/htop 找到高 CPU/内存 占用的 Python 进程(必要时用 ps -ef | grep python 定位具体 PID)。
- 用 vmstat/iostat/netstat/ss 判断是否为 I/O、网络或系统资源 瓶颈(如 iowait 高、软中断高、连接数打满)。
- 用 dstat/nmon 做一段时间序列观测,辅助定位波动周期与关联资源。
- 在应用内用 psutil 采集关键指标(QPS、延迟、错误、队列长度等),并暴露 /metrics 接入 Prometheus/Grafana 做长期趋势与告警。
- 针对热点函数/接口,使用 cProfile 做整体剖析,再用 line_profiler 精确定位到行级瓶颈。
- 若怀疑内存问题,用 memory_profiler 逐行排查;对线上进程可用 py-spy 无侵入采样生成火焰图辅助分析。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS中Python性能监控方法
本文地址: https://pptw.com/jishu/752186.html
