问题标签 [performance-monitor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance - Windows XP 性能监视器应用程序 (perfmon) 中缺少处理器/内存计数器
Perfmon 是一个 Windows 实用程序,可帮助开发人员通过测量系统计数器来发现其应用程序中的瓶颈。
我正在阅读perfmon 教程,从这个基本计数器列表中,我在我的机器上找到了以下计数器:
- PhysicalDisk\Bytes/sec_Total
- 网络接口\字节总数/秒\nic 名称
但我没有在任何地方找到以下计数器:
- Processor\% Processor Time_Total
- 流程\工作集_总计
- 内存\可用 MBytes
我在哪里可以找到它们?请注意,我的 Windows 是 pt-BR(而不是 en-US)。在哪里可以找到 PerfMon 等 Windows 工具的语言特定文档?
.net-3.5 - .NET 3.5 Windows 服务的 GC 句柄数 (#) 不断增长的根本原因是什么?
我有一个在 .NET Framework 3.5 上运行的 C# Windows 服务,它显示出不断增长的 GC 句柄(使用 Windows Server 2003 上的系统监视器查看)。
我确保所有资源都被正确处理,并且我的代码中没有终结器。
“Large Object Heap size”和“# Bytes in all Heaps”相对而言是静态的,我可以看到“% Time in GC”表明正在发生垃圾收集。
“Private Bytes”计数器也在增加。
这种症状导致我在任务管理器中的“内存使用量”以每天大约 35 MB 的速度增长,这是不可接受的,因为该服务基本上是针对 Oracle 10g 运行一个简单的 SELECT 查询并每 5 秒使用 .NET TraceSources。值得一提的是,TraceSource 使用 .NET 侦听器对象输出到 Windows 事件日志和文本文件。
有谁知道为什么“# GC Handles”不断增加,因为我相信这与我的“内存使用”增加有关?
c# - 开源/免费 C# 平台诊断库(CPU、RAM、HDD 等)
我正在编写一个应用程序,它允许我监控服务器系统的各种健康参数(CPU、RAM、HDD、进程和服务使用情况等),然后连接到不同的系统进行数据分析。我可以通过 PerformanceCounter 或查询 WMI 获取很多值,但想知道是否已经有某种免费/开源库,其中包含我可以使用的大量系统诊断信息检索器?
谢谢!
android - 如何在 Android 上获取 CPU 使用率统计信息?
我想获得 Android 上的整体 CPU 使用率,类似于 Windows 的任务管理器所做的。我可以解析top
Android中包含的程序的输出,但是如果有一个API调用可以做同样的事情,那就更好了。
任何指针?
c# - 使用远程性能监视器帮助查找泄漏
我正在尝试使用远程性能监视器在 Compact Framework 应用程序中查找内存泄漏的来源。我设法删除了一些与画笔和其他图形对象相关的小问题,但我仍然不清楚是什么导致了主要问题。
在这一点上,唯一似乎永远不会回到原始计数的对象是 System.String 对象。我觉得这很奇怪,因为我认为为了使这些对象保持未被收集,包含它们的对象也必须保留,但似乎没有其他类型的对象随着系统.字符串。
我试图找出哪些新字符串对象是应用程序返回其原始状态(即登录屏幕)后保留的对象。问题是,最初,应用程序加载了大约 2200 个字符串对象,然后在进程“X”之后又增加了 70 个左右,这些对象永远不会被收集。我不知道如何识别这 70 个新对象,以便找出谁在持有它们并进行适当的更正。
有没有人有没有收集字符串的经验?有什么方法可以将在进程“X”期间创建的新对象与应用程序最初需要的对象分开,以便我可以知道哪些正在泄漏?任何意见,将不胜感激。
谢谢
**更新
好的...发生了一些非常奇怪的事情。我开始怀疑是否有泄漏。
假设我在登录屏幕上拍摄内存快照,这是应用程序的原始起点。假设此时内存中有 1000 个字符串对象。现在,如果我登录并从菜单中选择一个选项,我将在新屏幕加载后拍摄快照。假设加载此表单会使字符串计数增加 50 个对象。当我注销并在登录屏幕上再次拍摄快照时,仅收集了其中的 25 个对象,其余的将从那时起保留在内存中。
奇怪的是,如果我继续重复这个过程,就不会再积累更多的字符串对象了。此时字符串数不会增加 50,而是仅添加 25 个,并且一旦我返回登录屏幕,将收集相同的 25 个。我在想,如果这是一个真正的泄漏,那么每次我打开那个屏幕时,字符串数都会永久增加 25,但这只是第一次发生。
在我打开的每个新屏幕上都会发生这种情况。起初,总的字符串数会持续小幅增加,但是一旦我加载了该特定屏幕,一旦我返回登录屏幕,就会收集执行期间字符串数的任何增加。
所有这一切让我相信,也许这些字符串是 CLR 内部工作的一部分或类似的东西。它可能是运行时完成的某种缓存吗?也许它正在存储我的字符串常量以加快加载速度?类似的东西?我希望这不会太混乱。
.net - 在 PerfMon 实例中选择正确的 AppPool
我有一个带有六个应用程序池的网络服务器。当我想在 PerfMon 中为特定的 ASP.NET 应用程序添加计数器时,可用的实例具有非常不同的名称。
例如,我有一个名为“FrontEnd”的应用程序池,这些是可用的实例:
_LM_W3SVC_1_Root_bookeline
_LM_W3SVC_1_Root_CredentialsService
_LM_W3SVC_1_Root_pReports
_LM_W3SVC_1130837766_Root
_LM_W3SVC_1147758436_Root
_LM_W3SVC_1254277584_Root
_LM_W3SVC_1366866887_Root
_LM_W3SVC_1505760911_Root
_LM_W3SVC_1604538730_Root
_LM_W3SVC_1618350214_Root
_LM_W3SVC_175082253_Root
_LM_W3SVC_177047044_Root
_LM_W3SVC_1825997120_ROOT
_LM_W3SVC_1966585210_Root
_LM_W3SVC_204756873_Root
_LM_W3SVC_261753984_Root
_LM_W3SVC_3_ROOT
_LM_W3SVC_315617261_Root
_LM_W3SVC_36575378_Root
_LM_W3SVC_575979470_Root
_LM_W3SVC_831033229_Root
_LM_W3SVC_940052100_Root
一位同事提出了一个巧妙的技巧,即通过创建一个小的 .bat 文件来匹配应用程序池和进程 ID:
c:\windows\system32\cscript.exe c:\windows\system32\iisapp.vbs
暂停
但是,这些 ID 似乎也与实例没有任何关系。
我在这里有什么误解?
performance - 捕获所有 Windows 性能监视器计数器
我需要监控一些服务器的性能,因此需要为此创建性能计数器。
目前我不得不手动添加计数器来创建数据收集器,这需要很长时间才能完成,因为服务器有不同的自定义计数器。
有没有一种简单的方法可以选择所有计数器并收集它们,而不是一个一个地选择和添加?
谢谢瑞凯诗
powershell - Powershell 中的性能计数器 API 调用错误
我想通过 Powershell 从 Perfmon 获取有关性能的特定信息,并使用另一个服务运行的脚本将其写入 .csv 文件。我知道 Powershell 可以给出一些有趣的错误信息,因此我想听听你们中是否有人能弄清楚我到底做错了什么。
我试图使工作的代码看起来像这样:
出现这样的错误:
然而,如果我选择性能计数器类别而不是细节,它会起作用。一个例子是这样的:
.net - IIS 6 性能监视器
我想获取特定网站的活动用户会话。
我正在使用性能监视器来获取 IIS6 网站的当前活动会话。
活动会话计数器为我提供了会话实例,因此在IIS 7 - windows server 2008 r2上为特定网站提供了活动会话计数,但是当我在IIS6 - windows server 2003 服务器上尝试相同时,性能计数器不显示任何会话实例。
任何想法?
azure - 识别 Web 角色实例的关联 w3wp 进程
我正在监视 Azure 服务的性能。
当前有两个 Web 角色实例(用于同一网站)正在运行 - 每个都有自己的 W3WP.exe(w3wp 和 w3wp#1)
如何找出哪个 w3wp 进程属于哪个角色实例?
有了这些信息,我想为 azure.diagnostics.monitor 提供一些性能计数器 - 即 Process(w3wp)\ProcessorTime (%) 和线程计数。但为了获得任何有意义的数据,我必须将 w3wp 进程的进程 ID 附加到性能计数器(例如 Process(w3wp_PID)\processorTime(%)) - 不知道语法是否正确,但有一种方法可以附加PID)
因此 AzureStorage 表 WADPerformanceCounters 中的最终结果只有以下条目:
自动取款机
我想:如果我为每个角色启动了一个 DiagnosticsMonitor,那么监视器将使用正确的进程——属于启动监视器的角色实例。但实际上这不起作用 - 或者我认为它不起作用 - 至少在查看结果值之后。
//更新:在 manage.windowsazure 门户上,您可以为性能监控定义自定义指标。此处可以选择要独占监控的 webrole 实例。这也是我想做的。了解此页面的实际作用也可能有所帮助。
比较: http: //puu.sh/1xp7q
我能想到的获取此信息的唯一愚蠢方法是:在每个 w3wp 启动之前和之后获取所有进程的列表 - 确定添加了哪个进程,然后根据代码库上下文决定哪个角色实例刚刚启动。