dsu*_*sum 9 .net performance profiling
是否有任何 .NET 性能分析工具可以附加到正在运行的 Windows 服务并进行基本的堆栈调用采样?如果该工具不需要安装,那就太好了,因为我需要通过客户的 IT 部门处理大量繁文缛节。
谢谢
性能问题的性质:这个有性能问题的程序作为 Windows 服务运行,它处理来自 200 多个移动设备的收入消息。通常这个程序每秒可以处理至少 10 条消息。不幸的是,在最近的升级之后,由于某些原因,该程序通常在早上 7 点左右不再能够足够快地处理消息。一条消息进来,它可能在程序内部队列中停留超过 10 分钟,然后才能被处理。我们还注意到该程序使用的 CPU 高于普通 CPU。通常在八核机器上应该是 5%,现在是 20-25%。
该程序不仅仅处理传入的消息,它还维护数据库并向客户端提供数据。它有五个线程处理传入的消息,任何维护作业都在其线程上运行。
当前的解决方法是在速度变慢时重新启动服务。重新启动后,程序会再次正常运行(CPU 低于 5%)。直到第二天早上 7 点左右,它才会发生。每次重新启动后,队列中的所有消息都会被丢弃。通常早上 7 点和下午 5 点是我们收到大量消息的时间,但问题似乎只发生在早上 7 点。
我们的团队已尝试使用模拟消息在内部重现该程序,并进行代码比较以查看是否存在任何关键瓶颈。
感谢所有的建议。
我尝试了许多分析工具,但所有这些工具都需要安装,而且有些需要花钱。
尝试使用“ Windows调试工具”+“进程资源管理器”+“进程监视器”来查看是否可以获得正在运行的线程的堆栈跟踪的快照。不幸的是无法让我们自己的托管符号文件(pdb)工作。我可以看到对内核 api 的所有调用,但看不到我自己的代码。
幸运的是,我们的客户批准我们安装分析器。如果您使用的是 Visual Studio Premium 或 Enterprise 版本,它会附带一个独立的探查器。我能够在客户端计算机上获取配置文件报告并使用 Visual Studio 分析该报告。