【发布时间】:2011-03-01 21:39:46
【问题描述】:
我想在 ColdFusion 网站(具有专用服务器)上创建一个页面,该页面为用户提供有关服务器所承受压力的一些信息。
这样用户就可以去那里看到服务器慢的原因是因为高流量,或者是由于其他原因(这可能是我手动提供的信息)。
流量数据需要是动态的。
所以我很好奇以前是否有其他人尝试过解决这样的问题?是否有一些开源软件包可以提供帮助?
【问题讨论】:
我想在 ColdFusion 网站(具有专用服务器)上创建一个页面,该页面为用户提供有关服务器所承受压力的一些信息。
这样用户就可以去那里看到服务器慢的原因是因为高流量,或者是由于其他原因(这可能是我手动提供的信息)。
流量数据需要是动态的。
所以我很好奇以前是否有其他人尝试过解决这样的问题?是否有一些开源软件包可以提供帮助?
【问题讨论】:
有几种免费(而非免费)的 CF 监控工具可供使用,它们具有各种形状和大小。这是一个很好的清单: http://cf411.com/#cfmon
该列表中的许多类型都是您正在寻找的类型,可让您在单个页面中向用户公开此类数据。如果您确实将其放在公共服务器上,我建议您将身份验证放在它前面......这不是您想要向公众公开的那种信息! :)
【讨论】:
对于初学者,您可以获得有关 JVM 内存使用情况的实时信息:
<cfset runtime = CreateObject("java","java.lang.Runtime").getRuntime()>
<cfset freeMemory = runtime.freeMemory() / 1024 / 1024>
<cfset totalMemory = runtime.totalMemory() / 1024 / 1024>
<cfset maxMemory = runtime.maxMemory() / 1024 / 1024>
也有可能——尽管显然不是在所有系统上——获取有关服务器本身内存情况的信息:
<cfset mFact = createObject('java','java.lang.management.ManagementFactory')>
<cfset osBean = mFact.getOperatingSystemMXBean()>
<cfset freeSystemMem = osBean.getFreePhysicalMemorySize()>
<cfset totalSystemMem = osBean.getTotalPhysicalMemorySize()>
如果您使用Server Monitor API,您可以更详细地了解。如果你使用FusionReactor,FRAPI 会暴露各种有趣的功能,比如getCpuUsage()。
我不确定向您的用户公开此类信息是否有意义,但有一些选择。
【讨论】:
我不确定您是否在 Windows 上运行,但如果您是另一个选择,则允许 perfmon 收集有关您的 ColdFusion 实例的统计信息,例如平均请求时间、队列长度等。
您当然也可以通过perfmon 收集 CPU、可用内存等,并将它们存储一组日志文件,您可以使用 CF 计划任务每分钟读取一次,并存储在数据库中以进行汇总和图表等。
当然,在这种情况下,您的数据可能长达一分钟,但它对于存储数天和数月的指标非常有用,这样您就可以了解您的服务器在一段时间内的运行情况。
我们已经使用这个解决方案几年了,虽然它需要一些维护,但它确实让我们能够很好地了解我们所有服务器的性能。
我想在未来使用像New Relic 这样的东西,但它们不支持 JRun。也许如果 CF 允许独立于 Tomcat,我们将来会看到这个选项。
【讨论】:
真的取决于你想看到什么确切的数据?
我认为混合了谷歌分析,如果你在 Windows 上使用 wmi,收集硬件/操作系统/coldfusion 性能计数器/统计信息。
这是 wmi 和 Coldfusion 的示例。
http://misterdai.wordpress.com/2010/03/02/askdave-cf7-cpu-usage-on-windows/
然后这是我同样的问题,还有一些例子:
I want to use WMI or Java in ColdFusion on Windows to get performance data
【讨论】: