服务器的性能监控无外乎消耗时间占用cpu带宽内存比等等,做得稍微细致点针对某些关键系统或计算单元的单独运算消耗;老的实现方式在需要的地方加段统计代码或是在类里加个全局变量累计,最后利用控制台输出到屏幕上或是写log记录。
之前老工程也是这么流程走下来的,但有些问题老框架无法避免。 一是监控的输出和其他输出混插,尤其是在多线程的情况下完全没有顺序可以保证,如果控制台本身实现了输入的功能那显示出的东西完全无法用来监控,二是控制台本身受限于平台,以后的服务器要放linux下跑很多东西没法通用,三是监控的信息没法统一,每个server自己有个即便能正常输出要分别看那么多的屏幕也没法管理,最后就是用于监控的代码不太好开关,因为监控本身运算所占用的逻辑并不少,而且性能监控在某些特定的环境才需要,如果正式版本也附带这种额外的开销就不太好了。
基于解决以上问题,决定修改原有的监控方式。框架中引入了新2个工程,一个静态库工程,用于定义剖析所用的宏,这种宏每个服务器有个对应的文件其中包含了性能运算所需要定义的函数和变量,在编译器选择对应的宏就可以达到开关剖析模块的目的。这个工程里还附带一个数据报告的模块,这个模块对应了几种模式一种是本地统计记录并输出,一种是利用UDP发送给远端的分析器,由分析器统一管理。传输的内容可以只限于数据这样就可以整合成一个统一的协议,而不同的显示的内容可以通过id到另外一个工程-- 分析器工程里去转化。添加新的剖析模块时只需要以下步骤:1定义新的剖析枚举 2 在对应工程文件中加入宏实现这个模块对应的逻辑 3 在分析器里加入显示用的格式化字串,如果需要特别显示就swtich再处理以下
这是目前分析器的雏形,分别对应监控文字输出(左),CPU占用(右)和带宽占用(下)
(e.g. 好久没接触mfc了,没想到2008创建的mfc默认工程居然是个vs的界面。。。太花哨了,还有皮肤可选)