是否有一个实用程序可以可视化/隔离和观察应用程序调用

是否有一个实用程序可以可视化/隔离和观察应用程序调用

注意:我不确定要搜索什么,因此有关这方面的指导可能与答案一样有价值。

我正在寻找一种方法来直观地比较两个应用程序的活动(在本例中是使用 php 与系统或 mysql 或网络设备通信的 Web 服务器等),以便我可以一目了然地比较性能。

我知道有一些工具可以根据 apache 的基准生成数据转储,还有一些可用于 php 的跟踪,您可以转储和分析这些工具,但我正在寻找的是可以根据调用数据直观地报告性能指标(调用了什么,花了多长时间,消耗了多少内存,如何在调用堆栈中直观地表示)并以图形方式呈现它,就好像它是一个拓扑或分层视觉效果,其中系统调用的不同元素占据不同的层。

典型的视觉效果可能包括(例如,使用游泳图作为一个类比):

Network (details here relevant to network diagnostics)
   |                                                                       ^ back out
   v                                                                       |
 Linux (details here related to firewall/routing diagnostics)              ^ back to network
   |                                                                       |
   V                                                                       ^ back to system
 Apache (details here related to web request)                              |
   |                                                                       ^ response to
   V                                                                       |  apache
  PHP (etc)         PHP---------->other accesses to php files/resources-----
   |                 ^
   v                 |
 MySQL (total time) MySQL
   |                 ^
   V                 |
Each call listed + time + tables hit/record returned

我的目标是能够在一段时间内“检查”一个请求/一系列请求,以了解当时的活动构成,并将其作为诊断工具从头到尾进行跟踪。

有没有这方面的工作?

我知道这会占用大量服务器资源,但其目的是出于教育和专业原因对各个流程进行基准测试和分析,与原始统计数据或数十个离散活动与时间图相比,视觉辅助工具更能让人大开眼界。很难显示完整的周期。

欢迎任何指点。

谢谢!

来自评论:

> XHProf in conjunction with other programs such as Perconna toolkit
> (percona.com/doc/percona-toolkit/2.0/pt-pmp.html) for mySQL run apache
> with httpd -X & (Single threaded debug mode and background) then
> attach with strace -> kcache grind

答案1

你可能想看看新Relic。虽然它不是免费的,但它会检测你的应用程序并给你一些你正在寻找的数据。

答案2

你会想尝试一下XH专业,虽然设置并不简单但它可以生成调用图。(例如在谷歌图片上发现的随机样本:http://blog.thedigitals.pl/wp-content/uploads/2010/02/callgraph.png

Web 界面还可以列举各种统计数据,例如 CPU 时间和内存使用情况,如果您想并排比较应用程序调用,我认为这就是方法。

答案3

除非您的系统非常非常繁忙,否则网络、Linux 和 Apache 层与堆栈的其余部分相比仅消耗一小部分时间。

只需使用 PHP XDebug 扩展,然后加载 XDebug 生成的数据文件即可缓存研磨器或类似的东西。

如果 KCachegrind 显示你的 MySQL 是真正的瓶颈,那么只需mysqltuner、、、或者MySQL Workbench简单的慢查询日志浏览就可以找出那里的瓶颈。mytopinnotop


如果您确实认为 Apache 是您的瓶颈,请查看其服务器状态页面。尝试调整诸如 之类的值TimeOutKeepAlive并考虑使用除默认preforkFPM 之外的其他值。如果其他一切都失败了,请切换到lighttpdnginx

只有在您对 PHP+MySQL 和 Apache 层进行微调之后,Linux 或网络才会成为您的瓶颈。

答案4

追踪是另一个全栈性能分析器,类似于 New Relic。Tracelytics 有一些漂亮的图表显示应用程序延迟,如果我没记错的话,它确实显示到了调用级别。看看吧,它可能会很有用。

相关内容