python多线程排查

问题

公司服务总是莫名其妙的cpu饱满排查了代码中的定时任务,排除之后仍经常出现类似问题。是时候debug了
在这里插入图片描述

排查过程

cpu劣化是一个过程,cpu持续增长到60%,然后突然服务雪崩不服务了。排查下来看sleep的物理线程和cpu增长的幅度一致
在这里插入图片描述
那么排查什么程序创建这么多线程就是key。

明确问题

公司打点不太可信,用一些linux命令确认下

pstree -p 

在这里插入图片描述
可以明显看到 PID=254启动了大量线程 再wc -l下看看有多少个和metrics打点一致
在这里插入图片描述

py-spy工具

参考这个文章:https://zhuanlan.zhihu.com/p/106115146

引用官方的介绍:

Py-Spy是Python程序的抽样分析器。
它允许您可视化查看Python程序在哪些地方花了更多时间,整个监控方式无需重新启动程序或以任何方式修改工程代码。
Py-Spy的开销非常低:它是用Rust编写的,速度与编译的Python程序不在同一个进程中运行。
这意味着Py-Spy可以安全地用于生成生产环境中的Python应用调优分析。

pip3 install  py-spy

用这个工具主要是看下到底是哪个代码开了这么多线程!!注意dump命令只能调试运行中的程序

py-spy dump --pid 254

![在这里插入图片描述](https://img-blog.csdnimg.cn/55dace62c25a46f3b07788f67b407d19.jpeg
原形毕露!!天杀的pymongo 起这么多线程!!

解决

因为客户新报告的这个issue,之前一直没有问题,这次唯一区别是find返回的数据量比较 大,一千万条数据。所以怀疑跟数据量有关系,可能是pymongo的find返回大数据量时候 有bug,所以针对不能的数据量级别做如下测试【这块偷图了】来自:https://zhuanlan.zhihu.com/p/250669746
在这里插入图片描述

可以看出pymongodb的线程处理有bug,但find返回大数据量时候不能及时关闭线程。

建议客户使用Python3.8,临时修复这个问题。PyMongo在3.7版本当find返回大数据量(>5 million)时候线程管理存在bug,后续查看源代码并report issue给pymongo开发团队。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Rust 基础篇】Rust 多线程:并发编程的艺术

导言 多线程是现代计算机编程中的重要概念,它允许程序同时执行多个任务,充分利用多核处理器的性能优势。在 Rust 中,多线程编程也得到了很好的支持,通过标准库提供的 std::thread 模块可以方便地创建和管理线程。本篇博客将详细介…

vue3+pinia的使用,刷新后不丢数据

前言: 好用的状态管理器,vue3中出来的pinia,相比较vuex来说,更加轻便,使用也更方便。 官方文档:点我 github地址:点我 pinia与vuex相比较优点: pinia 是轻量级状态管理工具&#x…

hadoop安全保护机制(kerberos + ldap)

信息安全理论: CIA模型:机密性、完整性和可用性 CIA模型能够帮助建议一些信息安全原则,但该模型并不是一个需要严格遵守的规则 hadoop平台可能设计多个CIA模型组件,也kennel一个也不涉及 机密性: 信息只应该被期望的…

探索AI图像安全,助力可信AI发展

探索AI图像安全,助力可信AI发展 0. 前言1. 人工智能发展与安全挑战1.1 人工智能及其发展1.2 人工智能安全挑战 2. WAIC 2023 多模态基础大模型的可信 AI2.1 WAIC 2023 专题论坛2.2 走进合合信息 3. AI 图像安全3.1 图像篡改检测3.2 生成式图像鉴别3.3 OCR 对抗攻击技…

Vis相关的期刊会议

中国计算机学会推荐国际学术会议和期刊目录 文档, 下载 link:CCF推荐国际学术刊物目录-中国计算机学会 一.可视化方向文章 1.IEEE VIS,是由 IEEE Visualization and Graphics Technical Committee(VGTC) 主办的数据可视化领域的顶级会议&a…

LeetCode_模拟_中等_874.模拟行走机器人

目录 1.题目2.思路3.代码实现(Java) 1.题目 机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度-1 &#xf…

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)

文章目录 一、检测相关(5篇)1.1 TALL: Thumbnail Layout for Deepfake Video Detection1.2 Cloud Detection in Multispectral Satellite Images Using Support Vector Machines With Quantum Kernels1.3 Multimodal Motion Conditioned Diffusion Model for Skeleton-based Vi…

【Linux】自动化构建工具-make/Makefile详解

前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎!本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读:YY的《…

深度学习——LSTM解决分类问题

RNN基本介绍 概述 循环神经网络(Recurrent Neural Network,RNN)是一种深度学习模型,主要用于处理序列数据,如文本、语音、时间序列等具有时序关系的数据。 核心思想 RNN的关键思想是引入了循环结构,允许…

7.21一日总结

1.redux中action传参 a.传参 在时间中,第二个参数就是传递的值,num就是传递的参数 onClick{()>{store.dispatch({type:del,num:1})}} b.接收参数 const reducer function (state { ...data }, action) {switch (action.type) {case "del":console.log(action.n…

什么是剪贴板劫持-剪贴板劫持教程

目录 前言 什么是剪贴板劫持如何避免剪贴板劫持?如何执行剪贴板劫持? 总结 前言 我来写剪贴板劫持教程。 什么是剪贴板劫持 剪贴板劫持是一种危险的攻击技术,借助该攻击者可以控制受害者的剪贴板并将恶意代码粘贴到目标机器中,…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统;液晶显示当前信息和状态;通过语音识别模块对当前垃圾种类进行语音识别; 通过蜂鸣器进行声光报警提醒垃圾桶已满;采用舵机控制垃圾桶打开关闭;超声波检测当前垃圾桶满溢程度&#xff1…

认识spring项目的创建 和 从spring中进行Bean对象的存取

前言 本篇简单介绍如何创建spring项目,如何存储到spring容器中,如何从容器中获取Bean对象,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言1. 创建spring项目2. 将Bean对象存…

RS485/RS232自由转ETHERNET/IP网关rs485和232接口一样吗

你是否曾经遇到过这样的问题:如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢? 远创智控的YC-EIP-RS485/232通讯网关,自主研发的ETHERNET/IP从站功能,完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线…

服务器数据恢复-ESX SERVER无法连接到STORAGE的数据恢复案例

服务器数据恢复环境: 某公司信息管理平台,数台VMware ESX SERVER虚拟机共享一台IBM某型号存储。 服务器故障: VC报告虚拟磁盘丢失,管理员ssh到ESX中执行fdisk -l命令查看磁盘,发现STORAGE已经没有分区表了。重启设备后…

WAIC2023:图像内容安全黑科技助力可信AI发展

目录 0 写在前面1 AI图像篡改检测2 生成式图像鉴别2.1 主干特征提取通道2.2 注意力模块2.3 纹理增强模块 3 OCR对抗攻击4 助力可信AI向善发展总结 0 写在前面 2023世界人工智能大会(WAIC)已圆满结束,恰逢全球大模型和生成式人工智能蓬勃兴起之时,今年参…

C++第五讲

思维导图 续&#xff1a;myString类完善 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myString { priva…

社区发现相关算法

目录 **社区检测与聚类****社区检测技术**1. Louvain 社区检测[2]2. Surprise社区检测[3]3. 莱顿社区检测[4]4. Walktrap 社区检测[5] 结论5.LPA 标签传播6.K-L算法7.GN算法8.Newman快速算法 SlashBurn: Graph Compression and Mining beyond Caveman CommunitiesReferences 摘…

WebSocket笔记

1. websocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接W…

【微信小程序】分别对确认和取消按钮设置不同的样式,添加自定义的样式类

给确认和取消按钮设置不同的微信小程序样式&#xff0c;你可以使用<button>标签的class属性来添加自定义的样式类&#xff0c;并在对应的样式类中定义不同的样式。 以下是一个示例代码&#xff0c;演示如何给确认按钮和取消按钮设置不同的样式&#xff1a; <button …