Unnamed Application First Day

       最近因为工作的关系在研究PHP类应用监控的问题,对于语言类监控,在不破坏目标的情况下(这里是指不修改目标的代码,也不需要目标应用刻意开放一些内部接口)获取目标应用的一些性能指标(CPU,内存使用情况,目标对象数量以及目标应用最长的call graph)这是最理想的情况.

       在监控应用的路线上,我们有三种基本方案: 1. 在应用的启动前和结束后调用我们自定义的接口,2.对应用的语言底层进行扩展,以便实时获取我们想要的性能指标数据,3.修改目标应用的源码.

       在上述的三种方案中,第三种是能拿到最全性能指标也是最不可能实施的方案.毕竟目标应用的拥有者并不愿意看到这种情况的发生,因为这意味着大量的代码改动甚至会造成某些逻辑性的破坏.

       第二种方案看起来也很不错,感觉这种才有技术含量的,但是这种会面临着新问题,对语言的底层,即内核做扩展这意味着我们可能要尝试着写一些C代码,在某些情况下这些C代码要遵循更多的规范和要求(语言本身对扩展的支持和规范,在php中extension要遵循php或zend的一些规范),对于一般码农来说这无疑是是个challenge.同时当我们开发的新扩展和目标应用一起运行时,我们的扩展是否对应用的性能有所影响?如果因为我们所开发的扩展导致目标应用的性能下降了或者干脆频繁报错,这是我们不想看到的,所以这种方案在初期是不被采用的,没有足够成熟的技术和一定的技术沉淀做支撑,只会自掘坟墓.

       未完待续

posted @ 2013-11-26 21:17  阿炎  阅读(113)  评论(0编辑  收藏  举报