是否有可视化/隔离和观看应用程序调用的实用程序

注:我不确定search什么样的指导可能与答案一样有价值。

我正在寻找一种方法来直观地比较两个应用程序的活动(在这种情况下,一个Web服务器与PHP通信与系统或MySQL或networking设备等),使我可以比较性能一目了然。

我知道有一些工具可以从apache的基准testing产生数据转储,还有一些可用于php的追踪转储和分析,但是我正在寻找的东西可以从调用数据中直观地报告性能指标(什么叫做什么,它需要多长时间,它消耗了多less内存,如何在调用堆栈中以可视方式表示),并以graphics方式呈现,就好像它是一个拓扑或分层的可视化系统调用占用不同层次的不同元素。

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

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 

你可能想看看NewRelic 。 尽pipe它不是免费的,但它将会testing您的应用程序并为您提供一些您正在查找的数据。

你会想尝试XHProf ,而设置远不是微不足道的,它可以产生调用图。 (例如,在谷歌图片上发现的随机样本: http : //blog.thedigitals.pl/wp-content/uploads/2010/02/callgraph.png )

Web界面还可以枚举各种统计信息,如CPU和内存使用情况,如果你想并排比较应用程序调用这是我认为的方式。

除非你有一个非常非常繁忙的系统,否则networking,Linux和Apache层的消耗只有一小部分时间。

只需使用PHP XDebug扩展,然后将由XDebug生成的数据文件加载到KCachegrind或类似的。

如果KCachegrind揭示你的MySQL是实际的瓶颈,那么只需要mysqltunerMySQL Workbenchmytopinnotop或者老旧的缓慢的查询日志浏览器来找出你的瓶颈在那里。


如果你真的相信Apache是​​你的瓶颈,那么看看它的服务器状态页面。 尝试调整TimeOutKeepAlive等值,并考虑使用默认prefork FPM以外的值。 如果一切都失败了,切换到lighttpdnginx

在对PHP + MySQL和Apache图层进行微调之后,Linux或networking将只是您的瓶颈。

Tracelytics是另一个完整的堆栈性能分析器,类似于New Relic。 Tracelytics有一些漂亮的图表显示应用程序的延迟,如果我记得,是否显示了通话级别。 检查一下,这可能是有用的。