怎样判断和观察资源是因应用问题导致,是否可以准确定位到应用引发故障原因?

怎样判断和观察资源是因应用问题导致,是否可以准确定位到应用引发故障原因。

参与3

1同行回答

yangjianxvyangjianxv部门总经理成方金融科技有限公司
跑应用的时候 和不跑应用的时候,对比一下,资源差异大,就是应用导致的。但应用导致的CPU资源占用,不一定显示为用户态。比如应用不当的调用系统函数,或者不知情的情况下,大量调用系统函数,会导致内核态CPU特别高。通过CPU分析工具,可以看到应用执行的调用栈,当前执行到什么函数,或者...显示全部

跑应用的时候 和不跑应用的时候,对比一下,资源差异大,就是应用导致的。

但应用导致的CPU资源占用,不一定显示为用户态。比如应用不当的调用系统函数,或者不知情的情况下,大量调用系统函数,会导致内核态CPU特别高。

通过CPU分析工具,可以看到应用执行的调用栈,当前执行到什么函数,或者历史某个时间段,哪些函数占CPU高。

举个常用工具的例子

性能指标之资源指标-CPU-谁占用了CPU-函数级-tProf

首先看是Kernel、User、SharedLibrary中的那个方面占比消耗高。例如,如果是sharelib占比比较高,则找到对应的sharelib分页,查看具体哪个lib占用CPU高,再查看这个特定的lib中哪个函数占用CPU高。

如果通过以上方法不能定位到一个应用层的函数,而是定位到消耗CPU最高的是个系统函数。不但不认识这个系统函数,也看不出谁调用了这个系统函数,因为一些系统层的函数是通用函数(比如h_cede_end_point),从这类函数并不能看出是谁在调用。这种情况,可以通过这个系统函数相邻的那些能看懂的函数来猜测,因为占用CPU高的函数往往是同一个应用、同一个模块、同一类系统调用导致,他们具有扎堆出现的特点。


如果定位到一个进程有问题,可以用Truss–c –p pid查看一个进程在干什么,比如,是在做fork,还是文件读写

性能指标之资源指标-CPU-谁占用了CPU-函数级-truss

有兴趣可以看我的aixchina专栏“系统性能测试”、微信公众号“性能测试与调优”中,也有不少这方面的文章。

收起
银行 · 2016-12-29
浏览897

提问者

o0呼噜Zz
系统工程师机密
擅长领域: 云计算存储一体化运维

问题来自

相关问题

相关文章

问题状态

  • 发布时间:2016-12-28
  • 关注会员:2 人
  • 问题浏览:3402
  • 最近回答:2016-12-29
  • X社区推广