应用故障定位

在不分析源代码的情况下,是否有手段定位应用故障呢?谢谢。

参与7

1同行回答

yangjianxvyangjianxv部门总经理成方金融科技有限公司
通过CPU分析工具,可以看到应用执行的调用栈,当前执行到什么函数,或者历史某个时间段,哪些函数占CPU高。性能指标之资源指标-CPU-谁占用了CPU-函数级-tProf首先看是Kernel、User、Shared Library中的那个方面占比消耗高。例如,如果是share lib占比比较高,则找到对应的share lib...显示全部

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


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

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

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

如果是kernal->lock占 2~3% cpu就是很多了。

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


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

Summary看排在前面的进程,这些进程中找前几个动作查看,并且可以查看到内核态的报错信息

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

truss命令显示了应用程序对外部库和内核的调用情况。应用程序一般使用这些调用来访问网络、文件系统以及显示信息。通过观察这些调用及其结果,可以了解应用程序需要什么,并由此找到解决方案。

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

Coredump分析当前执行到哪里了

收起
银行 · 2016-12-29
浏览1811
  • 如果是kernal->lock占 2~3% cpu就是很多了。请问这句话怎么理解?
    2017-03-01

提问者

wangzhanmin
项目经理北京宇信科技集团股份有限公司

问题来自

相关问题

相关文章

问题状态

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