我们已经使用 AppDynamics APM 代理 (v4.5.2) 在 Windows 2012 上的 IIS8.0 中检测了一个 .Net 4.0 应用程序。
此服务器还安装了 McAfee Endpoint Protection v10.6.0.542 和威胁防护 v10.6.0.672。
安装了 APM 代理后,在典型负载下 CPU 会高得多(在 2 个 vCPU 上,使用代理约为 50-60%,不使用代理时为 10%)。在重负载下,应用程序也开始变得不稳定(请求开始排队和超时,响应时间变得非常长,开始出现错误)。
我们注意到,启用 McAfee 后,它会将两个 DLL 注入 w3wp 进程 - EpMPApi.dll 和 EpMPThe.dll。我们使用 Process Explorer 检查了这一点,查看了为该进程加载的 DLL。
我们运行了各种组合的性能测试:
- 多个不同版本的 APM 代理(没有区别)
- 代理的不同配置。我们发现排除系统库(System.dll)后,CPU 会低很多,性能可以接受,但响应时间仍然比没有代理的情况下要长。
- 在完全禁用 McAfee 的情况下,DLL 不存在,CPU/性能与之前没有代理的测试相似 - 开销在预期/可接受的范围内。
我们尝试在 McAfee 中添加 w3wp.exe 作为异常,但是我们看到 DLL 仍然加载,并且仍然出现高 CPU 和性能不佳的情况。
在内存转储中,我们始终看到应用程序线程等待 EpMPApi.dll 使用的关键部分。它似乎与尝试建立套接字连接的应用程序有关(它经常这样做,因为所有请求都涉及对下游系统的 WCF 调用)。
我们想了解我们是否/如何将 McAfee 配置为完全排除 w3wp.exe,或者停止它正在执行的任何与 APM 代理交互不良的活动。
我们还在 APM 代理方面工作,以了解我们是否可以在那里采取任何措施来防止或解决这种行为。
谢谢!