【问题标题】:I want to use WMI or Java in ColdFusion on Windows to get performance data我想在 Windows 上的 ColdFusion 中使用 WMI 或 Java 来获取性能数据
【发布时间】:2010-08-06 16:03:33
【问题描述】:

我正在推出我自己的简单的基于 Web 的 perfmon,我对我可以获得的一些数据不满意,比如我通过 sql 查询使用的 cpu 使用率。我能够很好地获得内存使用情况...我将附上屏幕截图,以便您查看我的主/主页/仪表板页面当前拥有的内容。

我目前正在使用 webcharts3d,我喜欢能够使用 ajax、更新图表,并且我有一个动态更新的仪表板。是的,当然我只需要获得几个性能计数器,因此我希望拥有一个基于 Web 的性能仪表板,我不会杀死服务器。

DECLARE @CPU_BUSY int, @IDLE int
SELECT @CPU_BUSY = @@CPU_BUSY, @IDLE = @@IDLE WAITFOR DELAY '000:00:01'
SELECT  (@@CPU_BUSY - @CPU_BUSY)/((@@IDLE - @IDLE + @@CPU_BUSY - @CPU_BUSY) *1.00) *100 AS 'CPU'

我得到的结果是 0.0000,所以要么查询错误,要么我的 cpu 活动很少。当我使用我的 Windows 任务管理器时。

这是我正在使用的收集内存的代码,我不声称任何代码的功劳,我在某个地方找到了它。

<cfscript>
      jRuntime = CreateObject("java","java.lang.Runtime").getRuntime();
      memory = StructNew();
      memory.freeAllocated = jRuntime.freeMemory() / 1024^2;
      memory.allocated = jRuntime.totalMemory() / 1024^2;
      memory.used = memory.allocated - memory.freeAllocated;
      memory.percentUsedAllo = (memory.used / memory.allocated) * 100;
</cfscript>

SysAdmin http://a.imageshack.us/img826/2575/sysadminscreenshot.png

所以我正在寻找更多的 wmi 或 java 或脚本来获取 cpu 使用率,也许还有任何其他重要的服务器统计信息。

【问题讨论】:

  • 有人有在coldfusion中工作的wmi例子吗?那也许我可以调整以获得不同的数据?

标签: java performance coldfusion wmi


【解决方案1】:

如何使用名为 GetMetricData 的 Coldfusion 内置函数。它可以帮助您像 Coldfusion Admin 一样监控服务器性能。我已经用 cfchart 条完成了它。如果你想与 Web3Dcharts 集成,你可以。

http://ppshein.wordpress.com/2010/08/04/getmetricdata-for-server-monitor/

<cfset pmData = GetMetricData(“PERF_MONITOR”) >
<cfchart chartheight=”500″ chartwidth=”700″ format=”PNG” showlegend=”yes”>
    <cfchartseries type=”bar” seriescolor=”##639526″ paintstyle=”light” colorlist=”##ff8080,##ffff80,##80ff80,##0080ff,##ff80c0,##ff80ff,##ff8040,##008000,##0080c0,##808000″>
        <cfchartdata item=”Page Hits” value=”#pmData.PageHits#”>
        <cfchartdata item=”Request Queued” value=”#pmData.ReqQueued#”>
        <cfchartdata item=”Database Hits” value=”#pmData.DBHits#”>
        <cfchartdata item=”Request Running” value=”#pmData.ReqRunning#”>
        <cfchartdata item=”Request TimedOut” value=”#pmData.ReqTimedOut#”>
        <cfchartdata item=”Bytes In” value=”#pmData.BytesIn#”>
        <cfchartdata item=”Bytes Out” value=”#pmData.BytesOut#”>
        <cfchartdata item=”Avg Queue Time” value=”#pmData.AvgQueueTime#”>
        <cfchartdata item=”Avg Request Time” value=”#pmData.AvgReqTime#”>
        <cfchartdata item=”Avg Database Time” value=”#pmData.AvgDBTime#”>
    </cfchartseries>
</cfchart>

【讨论】:

  • 我已经有了这些信息,我需要 cpu 使用率,我必须通过 wmi 或 java 获得它。
  • 小心使用GetMetricData(),在多服务器模式下安装时,它在CF企业上不起作用。
【解决方案2】:

另一种解决方案:

然后使用可靠性和性能监视器(即 perfmon),为 CPU(总计)创建一个计数器 - 它应该在长长的 Windows 计数器列表中。

您可以将此数据保存到文件或数据库中。如果将其保存到数据库,则可以使用 CF 查询该数据并获得非常准确的性能信息。您当然可以随时间在图表上显示它,这在我看来是一个巨大的好处。

完成后,您可以在 CF admin 中启用性能监控,然后您将可以在 perfmon 中获取 CF 性能指标。

我们已经在 10 多台机器的 CF 集群中成功实施了这个解决方案,它可以很好地了解给定时间点和历史上的服务器性能。

【讨论】:

  • 请注意,perfmon 不适用于企业安装 afaik
【解决方案3】:

CfTracker 可能有您需要的代码,并且由于它使用 Apache 许可证,您可以简单地从中获取任何相关的东西,只要您适当地分配属性。

如果您能更进一步,与Dave Boyet 讨论如何结合您的两个工具 - 或者至少在共同点上进行合作,那就更好了。


要更直接地回答您的问题,请发送电子邮件至blog article explaining how to use WMI from ColdFusion

【讨论】:

  • cftracker 使用 java 来获取更多以 java 为中心的信息,我的最终用户不会真正理解这些信息,这就是为什么我的目标是简单的基于硬件的测量,一眼就能看出是否有问题。不过还是谢谢你。
  • 如果您的用户是系统管理员,他们应该真正了解 Java 知识以及常规知识,但无论如何您可能错过了我的编辑?我刚刚还添加了一个指向 WMI 解决方案的链接,它也应该给你“简单”的东西?
  • 过去两天我一直在看那里。我尝试了又尝试,但无法使该脚本正常工作。我的用户不是系统管理员,我的最终用户是程序员,而我的老板是前网络管理员。
  • CfTracker 只会告诉您 Java 实例发生了什么。我什至还没有考虑将其扩展到服务器本身。如果您要使用整个系统,WMI 可能是您最好的选择。不过要小心,我遇到了定期查询 WMI 的问题,导致 WMI 服务冻结并需要重新启动。
猜你喜欢
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多