排查Python卡慢神器

发布时间 2023-08-21 20:16:00作者: TY520

如果遇到Python正在运行中的进程卡住,找不到原因。可以试试以下工具方法, 对于python就像jstack对于java一样。

法一

使用pystack-debugger

安装方式如下:

yum install gdb
pip install pystack-debugger

1.查看线程ID

ps ajx|grep gunicorn

2.查看堆栈信息,确认有问题代码

pystack pid

法二

使用py-spy工具

安装方式如下:

pip install py-spy

1.此工具可以较为清楚的列出进程下的每一个堆栈信息。执行函数的详细步骤。

py-spy dump --pid 20000

2.另外py-spy 还可以支持实时profiling, 生成火焰图。可以做性能优化的监控工具。
之后就定位了问题,是paramiko中大量的ssh连接没有关闭导致的。依次关闭之后做验证,线程数没有再增加,接口跑完就恢复到正常数量。