注意:我不知道该寻找什么,所以关于这个问题的指导可能和答案一样有价值。
我正在寻找一种方法来直观地比较两个应用程序的活动(在本例中是带有php与系统或mysql或网络设备通信的way服务器),这样我就可以一目了然地比较性能。
我知道有一些工具可以从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发布于 2012-02-26 22:48:57
您可能想看看NewRelic。虽然它不是免费的,但它会对您的应用程序进行测试,并提供您正在寻找的一些数据。
发布于 2012-02-28 10:06:08
您会想要尝试XHProf,而安装并不简单,它可以生成调用图。(例如谷歌图片上的随机样本:http://blog.thedigitals.pl/wp-content/uploads/2010/02/callgraph.png)
web接口还可以枚举各种统计数据,例如cpu上的时间和内存使用情况,如果您希望并行比较应用程序调用,我认为这是一种方法。
发布于 2012-02-28 13:10:41
除非您有一个非常非常繁忙的系统,否则网络、Linux和Apache层与堆栈的其余部分相比只消耗一小部分时间。
只需使用PHP扩展,然后将XDebug生成的数据文件加载到KCachegrind或类似的文件中。
如果KCachegrind显示您的MySQL是实际的瓶颈,那么只需要mysqltuner、MySQL Workbench、mytop、innotop或普通的好的、缓慢的查询日志浏览来找出您的瓶颈所在。
如果您真的认为Apache是您的瓶颈,那么请查看它的服务器状态页面。尝试对TimeOut、KeepAlive等值进行调优,并考虑使用默认的prefork FPM以外的其他内容。如果其他一切都失败了,切换到lighttpd或nginx。
只有在您对PHP+MySQL和Apache层进行了精调之后,Linux或网络才会成为您的瓶颈。
https://serverfault.com/questions/363305
复制相似问题