【问题标题】:What is exact time in Neo4j execution time?Neo4j 执行时间的确切时间是多少?
【发布时间】:2021-05-22 02:39:55
【问题描述】:

我在 Neo4j 桌面上使用 Neo4j 查询日志分析器来调查我的性能问题。 图中,第二次查询的总时间为 153281 毫秒(~2.5 分钟);但是规划、cpu和等待的时间都很短,总共只有1433ms。

Click here to view image

那么剩下的在哪里呢?我认为“总时间 = 计划 + cpu + 等待”,但似乎我错了。

提前谢谢你

哈维·阮

【问题讨论】:

    标签: neo4j cypher query-optimization graph-databases


    【解决方案1】:

    您可能希望在查询执行期间检查您的调试日志。寻找停止世界的停顿。

    查询执行时间是一个挂钟时间,包括查询开始和查询停止之间发生的任何虚拟机暂停。如果您看到这一点,则取决于您在暂停读数中是否看到正 GC 计数,这可能表明有一些未优化的查询触发了导致 VM 暂停的垃圾收集,您可能需要进行一些查询调整以优化它们.

    【讨论】:

    • 非常感谢您的帮助。这是查询日志 2021-02-06 15:33:10.100+0000 WARN [onkicVmPauseMonitorComponent] Detected VM stop-the-world pause: {pauseTime=687, gcTime=0, gcCount=0} 2021-02-06 16: 01:19.595+0000 WARN [onbrMetricsReportingBoltConnection] 由于身份验证失败,客户端未经授权。 2021-02-06 16:01:23.296+0000 INFO [onkNeoStoreDataSource] 轮换到事务日志 [/var/lib/neo4j/data/databases/ctsdatacenter/neostore.transaction.db.2992] 版本=2992,最后一个事务在以前的日志=8491554
    • 查询已在 2021-02-06 15:57:27.245 运行。正如您所提到的,有一个“虚拟机停止世界暂停”。那么如何确定哪些查询需要改进呢?
    • 这不是一个简单的问题。如果您将查询日志与调试日志交叉引用,请检查在 stop-the-world 暂停之前执行的查询(您可能需要从暂停的时间戳中减去暂停时间,因为它只能在暂停结束)。也就是说,687 毫秒不足以解释总执行时间。在那个时间附近是否还有其他停顿可以加起来接近那个总时间?
    • 另请参考我们文档的this query tuning section。您也可以在 Neo4j community forums 上寻求帮助,但我们需要查看查询,并且可能需要查看查询的 PROFILE 计划。
    • 我从 2 月 6 日起在 Neo4j 论坛上提出了这个问题,但没有答案 :(。我们可以继续在此链接上讨论:community.neo4j.com/t/…。再次,非常感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2011-07-24
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多