【问题标题】:Newrelic: How do I know which php-script is making a lot of database queries?Newrelic:我怎么知道哪个 php 脚本在进行大量数据库查询?
【发布时间】:2014-05-09 01:17:51
【问题描述】:

我在我的服务器中安装了 New Relic 以优化现有的 CodeIgniter 项目。
有一些控制器和模型在循环内运行数据库查询。
我已经修复了我能找到的大多数此类情况,但我想知道是否还有一些脚本在循环中运行查询。

如何在 New Relic 或一般情况下找到此类脚本?

【问题讨论】:

  • 我对 newrelic 了解不多,但尝试使用 CI 的原生基准、分析器工具。
  • 感谢您回复@Kyslik,但我必须在生产中检查它。我无法在那里打开探查器:(
  • 复制一份并在本地主机上运行,​​这也没有问题吗?
  • 嗯,时间太长了,我购买newrelic订阅是有原因的,我想实时监控这些东西。

标签: php mysql codeigniter optimization newrelic


【解决方案1】:

您可以查看 New Relic 中的数据库报告,了解哪些查询的吞吐量最高,并调查这是否符合预期。您还可以通过“控制器的最慢查询”过滤查询,以便在控制器和查询的基础上显示 SQL 数据(以及哪个控制器调用了它)。这可能是开始关注需要注意的性能问题的好地方。

您还可以启用数据库日志以查看所有正在执行的 SQL 查询。这在生产环境中很可能没有帮助,因为您将有很多查询给日志添加太多噪音,无法进行适当的调查。

您还应该查看 MySQL 插件可以添加哪些关于 MySQL 性能可见性的内容(这是一个所有 New Relic 客户都可以使用的免费插件): http://newrelic.com/plugins/new-relic-inc/52

可能最有用的是,您绝对应该查看一些您希望优化的脚本的事务跟踪,并查看多个查询连续发生时的数据库活动情况。如果您想让特定交易更有可能被追踪,您可以将其设为“关键交易”。一旦开始获取跟踪,您可以在易于查看的“树”中查看此脚本的执行过程中发生的情况。 SQL 数据也将被记录,因此您可以准确地看到在此事务期间执行的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多