如果遇到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连接没有关闭导致的。依次关闭之后做验证,线程数没有再增加,接口跑完就恢复到正常数量。