【腾讯TMQ】抽丝剥茧定位Windows客户端CPU占用问题

摘要

本文主要展示了从电脑管家CPU占用过高问题发现到解决的全过程。包括分析问题的思路、解决问题的方法、压力测试的设计、优化前后数据对比等。同时,在末尾分享了自动弹窗工具的设计思路,以及笔者对于测试自动化的一些思考和看法。

一、导火索

某天,我们接到一例用户反馈——问题的核心的在于管家在没有触发任何漏洞、扫毒、垃圾清理和体检的场景下,却占用了比较高的CPU资源。截图如下:

但是这个问题在测试过程中是从未出现,而且从用户反馈的场景描述中,也提取不出必现路径和关键逻辑。为此,我们主动联系该用户,在用户许可并且积极配合的前提下,获取其真实的机器环境和场景,抓取相关的管家信息,从而进一步进行分析和定位。

二、定位分析

联系用户抓取ETL文件进行分析(该工具的使用可参见微软官网申明:https://msdn.microsoft.com/library/windows/hardware/mt270977(v=vs.85).aspx)。

从收集上来的etl性能日志来看,CPU的异常主要是由管家进程的:A.dll(消耗大概10%的CPU)、B.dll(消耗大概16%的CPU)、C.dll(消耗大概7%的CPU)这三个模块影响,定位到模块之后,继续向下深挖,定位到三个模块下的具体函数调用关系链时,我们发现这三个模块下,资源占用最高的函数都有一个共同点,那就是他们都是通过微软的API-SetWinEventHook函数向系统注册的回调函数。
SetWinEventHook函数本质是windows系统向外提供的一种消息处理机制,每当有特定消息发出后,在目标应用程序处理该消息之前,SetWinEventHook程序就会先捕获该消息,提前调用注册的回调函数处理并可以决定是否

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值