桌面云aDesk 【aDesk】第三方软件句柄泄露导致虚拟机长时间运行后卡死

【aDesk】第三方软件句柄泄露导致虚拟机长时间运行后卡死

更新时间:2023-10-19 10:02:16
Win10虚拟机长时间运行,CPU和内存占满,提示系统资源不足,无法完成请求的服务后虚拟机卡死。
1. 管理员权限运行cmd,执行 poolmon.exe -a
poolmon.zip (29.19 KB)
运行一段时间,根据分配和释放的内存是否存在明显差异来判断是否存在内核(驱动这一层)内存泄露。
当前案例下,分配和释放的内存无明显差异。
初始状态:
运行一晚后:
2. 在运行过较长时间但未卡死的虚拟机上查看进程的句柄信息:
句柄数量涨到了79万!
杀掉进程后,虚拟机CPU和内存都降下来了
 
第三方软件句柄泄露导致,软件版本:


1. 根因由第三方厂商处理;
2. 按照VDI测试提供的最佳实践,定期关机。
1. 长时间运行卡死的问题,从类型上区分,存在两种可能:
(1) 应用程序内存泄露、句柄泄露导致;
通过任务管理器或procexp.exe在未卡死的虚拟机上查看进程列表,查看当前是否存在明显CPU、内存占用高,或句柄数量异常的进程。
(2) 驱动(尤其是加密、安全相关软件)内存泄露、注入进程后引发进程关闭时无法完全释放进程空间。
按照前面的方法通过poolmon.exe 查看驱动是否存在明显的内存泄露,明显的如下图所示:
Allocs和Frees存在明显的差异,这个时候再根据Tag(图中的FMfn)去搜索对应的驱动是哪个:
findstr /s /m /l "FMfn" c:\windows\system32\drivers\*.sys

找不到可以用everything搜索驱动文件存在的文件夹,逐个替换到上述findstr命令的目录。