
监测应用性能
“我怎么才能知道我的站点的运行状态?都说性能很重要,怎么操作才能满足性能呢?”---7yue.com
站长最喜欢的台词就是黑客帝国中的“Welcome to the real world!”,一句话的背后,包含的数不清的含义。有兴奋,有惊奇,有恐惧,有窃喜。ColdFusionMX的应用在经过长时间的开发后,总是要部署公开的。让众多的最终用户使用自己的ColdFusion应用,才是最终的目的。ColdFusionMX应用在开发阶段经历了数不清的调试和测试,终于发布了。但是真正艰巨的工作才刚刚开始。为什么这么说?ColdFusion应用一旦运行起来,你就不能随意的撤掉已经具备的逻辑,你只能做版本的更新。
“宁可报错,也别让应用没有响应。”这是我做ColdFusion应用的心得。知道错误,你可以很快的做出反映,修正并且更新。但是程序一旦出现没有任何响应的状况,你就需要花费非常多的心血来重头检查应用的性能和逻辑。
监测一个ColdFusion应用并不是手到擒来的容易事。首先我们要了解一些能够影响ColdFusion应用的因素。这些因素来自于多方面,但是每一点都很重要。
硬件是一个从根本上能够影响ColdFusionMX应用性能的因素。普通的硬盘和SCSI的支持RAID5方式的硬盘肯定在读取和存储数据的速度上有着根本的区别。防火墙也是一个因素,想想看,如果防火墙屏蔽掉了一个来自外部的经过1935端口的请求,那么你的FlashCom应用是无法跟外部互相传递视频和音频的。ColdFusion也一样。此外,使用10Base-T和100Base-T的以太网卡对于大型ColdFusion应用的数据吞吐性能上也有所不同。但是这里站长一笔带过,因为他们是有统一的解决方案。有预算,有性能。就这样。
来自于外部的任何一个请求都会占用系统资源。很多人错误的想法是,ColdFusion的应用只有用户在请求Cfm页面,进行动态数据查询或者其他动态交互操作时才会消耗系统资源。这个观点是错误的。要知道,一个简单的下载浏览一幅Gif图形的http请求,都会消耗系统的资源。虽说这不重要,但是积少成多,这就是我们为什么不做大容量,多图,多动画的首页和做图片下载站点的原因。对于ColdFusionMX而言,性能上已经对于前一个版本有了很大程度上的飞跃。ColdFusion5以前的版本是C++核心,每次外部对于动态cfm模板的请求,服务器端都要使用Run Time(时间运行库方式,即有请求就编译的方式) 的方式进行页面处理,这样,一个ColdFusion应用的服务器,如果有1万个这样的相同请求,ColdFusion5就要在服务器端通过Dll的RunTime方式编译1万次。而ColdFusionMX已经改成了Java Base结构,第一次的请求,服务器会把代码编译成类似于.class的文件存放于服务器端,以后一段时间内相同的请求,服务器都会运行这个编译好的文件,而不是重新编译动态模板。虽说这种方式还存在很多问题,但是对于性能上而言,ColdFusionMX又向前迈出了坚实的一步。
Ibm Websphere、Bea WebLogic、Sun One、ColdFusionMX都是基于J2ee的中间件服务器。所谓中间件,国外名字叫做Middleware。也就是架构于Web Server之上专门处理动态请求的专有系统。以往Web Server是iis和apache,最擅长干的就是执行外部的http请求返回html静态页面。现在有了中间件服务器(middleware application server) ,我们面临更多的内部操作,比如在ColdFusionMX应用中,我们可能用到数据库查询,可能用到第三方的扩展标签,外部导入的COM和CFX,与外部的Corba应用接口,与Flash和Webservice的集成等等,所以ColdFusionMX应用的性能更是一个重中之重的课题需要研究。
监测ColdFusionMX应用系统的性能应该从两个方面出发,一个是对于历史系统日志的分析,另外一个就是实时的监控。首先,我们先来研究一下ColdFusionMX系统中对于历史日志的分析。在ColdFusionMX中,从管理端查看Log日志是了解和监测系统性能和运行状况的一个重要手段。在ColdFusion Server里,有下表(表1)的一些Log文件可以时刻反映出ColdFusion应用的运行状况。
此文章不能满足您的需求?那就就Google一下吧:)



