【问题标题】:How to monitor and to log slow queries in Symfony + Doctrine如何在 Symfony + Doctrine 中监控和记录慢查询
【发布时间】:2019-12-06 09:00:19
【问题描述】:

我正在使用Doctrine 2.6 处理基于Symfony 3.4 的项目。

是否有可能自动监控所有 Doctrine 查询并记录执行时间超过某个阈值的查询?

我在我的开发版本上使用了blackfire.io 和其他工具来查找和修复潜在的性能问题。然而,即使是最好的测试也总是与在生产环境中对真实数据运行相同的代码有所不同。

因此,我想知道在生产中运行时哪些查询花费的时间最多。

【问题讨论】:

  • 在生产环境中使用 Datadog APM
  • 好吧,我很抱歉,但是 blackfire 有什么问题?我们仅使用 blackfire 就成功地将旧版 PHP 5 应用程序的性能提高了 30%。使用 Symfony 应该会更容易...
  • @LuninRoman Blackfire.io 很棒,但显然不是为了监控生产环境而设计的……Datadog APM 看起来很有趣,可以复杂化只监控 SQL/Doctrine 查询。衡量一个查询的运行时间应该不会太难。是否有任何内置解决方案或一些可以使用的事件?

标签: symfony doctrine-orm doctrine doctrine-query


【解决方案1】:

您可以使用 doctrine.dbal.logging 配置选项记录所有 Doctrine 查询(请参阅 https://symfony.com/doc/current/reference/configuration/doctrine.html)。

但这不会为您提供每次查询所花费的时间。为此,您必须创建自己的记录器,类似于 Symfony 用于调试工具栏的记录器(请参阅https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php)。

另一种可能的解决方案是使用数据库引擎提供的工具将慢速查询自动记录在专用文件中,以便您稍后对其进行分析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多