Neo4j知识库:初识Neo4j查询日志分析器

栏目: 数据库 · 发布时间: 5年前

内容简介:原文链接:查询日志分析器是一个Neo4j桌面应用,用于帮助了解Neo4j企业版服务器查询日志文件。

原文链接: https://medium.com/neo4j/meet...

查询日志分析器是一个Neo4j桌面应用,用于帮助了解Neo4j企业版服务器查询日志文件。

Neo4j知识库:初识Neo4j查询日志分析器

当Neo4j突然变慢、或者查询效率过低、再或者查询负载过高时,这时最好的办法就是查看查询日志。而查询日志通过neo4j.conf文件配置的。

dbms.logs.query.enabled=true
# If the execution of query takes more time than this threshold, 
# the query is logged. If set to zero then all queries
dbms.logs.query.threshold=100ms
dbms.logs.query.parameter_logging_enabled=true
dbms.logs.query.time_logging_enabled=true
dbms.logs.query.allocation_logging_enabled=true
dbms.logs.query.page_logging_enabled=true
dbms.track_query_cpu_time=true
dbms.track_query_allocation=true

一般情况下,设置一个阈值,当请求超过这个时间(示例是100ms,或者设置为0,代表所有请求)时,就会被记录下来。这也意味着,查询日志中记录的请求并不是服务器上的所有查询。但是这个 工具 仍然可以为你提供一个快速定位可能造成查询瓶颈的方向。

在后续的文章中我将会做详细的介绍。

当在开发项目时,最好要经常在开发服务器和测试服务器上分别去分析你的查询日志,以便发现问题。

工欲善其事必先利其器。接下来,先看一下如何安装查询日志分析器。

下面是在Neo4j Desktop 1.1.10+安装查询日志分析器。

Neo4j知识库:初识Neo4j查询日志分析器

打开“Graph Aplications"侧边栏,把URL ( https://neo.jfrog.io/neo/api/... 到"Insert Graph Application"输入框中,按下”Install“按钮。

Neo4j知识库:初识Neo4j查询日志分析器

选择一个工程,点击应用列表中的"+ Add Application"。

Neo4j知识库:初识Neo4j查询日志分析器

在这里增加“Query Log Analyzer”到你的工程中。

下面我来重点解释一下查询日志分析器。

查询日志分析器

查询日志分析器需要一个query.log文件。你将文件上传到工具中,然后它就开始分析。分析文件完成后,将显示下信息:

Neo4j知识库:初识Neo4j查询日志分析器

在上面的示例中的日志文件中,有17341行数据(一行一请求),有249个查询被发现。这些查询会显示在“Query Analysis"标签页中,你可以看到每个查询的统计数据。

查询分析

在Query Analysis标签页中,不同的查询是按 查询次数*平均时间 降序排列的。这样的 排序 可以将最耗时的查询排在最前面。

Neo4j知识库:初识Neo4j查询日志分析器

在Query Analysis标签页中,有以下字段和功能:

  • The Query(在AvgTime — Avg Mem值的下面)
    这是实际的查询语句
  • Query Count

    日志文件中查询的次数,对于这个查询,还有下面一些功能可以使用:

    • Filter
      在Query Log标签内中,只显示这个查询的查询纪录。
    • Highlight
      在Query Log标签内中,高亮显示这个查询。当要看同时发到服务器的查询时,会更便于查看。
    • Timline
      实验性的!在Query Timeline标签中今次显示查询
  • Avg Time, Min Tim, Max Time
    这里的时间是查询执行的累积时间(查询+执行计划+等待)。
  • Avg CPU

    实际请求执行所占CPU时间。当详细时间日志被禁用时,这里显示0.

    设置项:

    dbms.logs.query.time_logging_enabled=true
    dbms.track_query_cpu_time=true
  • Max Planning

    这是执行计划阶段所花费的最大时间,当鼠标悬停在该值上时,将会显示最小时间和平均时间。一般一个查询第一次被触发时,查询生成执行计划,然后这个执行计划被放到查询缓存中,当查询再次被执行时,生成执行计划的时间几乎为0。当执行计划被从缓存中移除时,下一个请求才会再次编译成执行计划。当Time logging被禁用时,此值显示0.设置项:

    dbms.logs.query.time_logging_enabled=true
  • Avg Waiting

    查询被执行前的平均等待时间。这个等待可能是由于数据库负载过重造成,也可能是由于数据库锁造成的。当Time logging被禁用时,此值显示为0。设置项:

    dbms.logs.query.time_logging_enabled=true
  • Cache Hits %

    代表这个请求的数据有百分之多少是从缓存中读取的。100%意味着所有数据都是从缓存中读取的。设置项:

    dbms.logs.query.page_logging_enabled=true
  • Avg Mem

    代表这个请求分配了多少内存。注意,这是一个累积值,表明了查询的内存占用情况。设置项:

    dbms.logs.query.allocation_logging_enabled=true
    dbms.track_query_allocation=true
  • Protocol + Clients

    在请求的上下文中你可以看到所使用的协议。其值有:

    • bolt
      一个blot客户端连到数据库。
    • http
      http客户端使用Neo4j的rest接口。(Neo4j老版本使用)
    • embedded
      来自数据库内部的调用,像存储过程或函数。

此外,还有一个客户端列表显示,它列出了当前有多少个不同IP向Neo4j服务器发出请求。注意,blot驱动是使用连接池连接数据库的,所以,你能看到1个IP会有多个客户端。

查询日志

Query Log标签页,使用查询日志行作为了标头。更多的信息则需要拖动水平滚动条才能看到。在第一个Query Analysis标签页里选择一个查询点击“Highlight",再点击Filter时,就会跳到这个页面,且只显示你选中的请求日志记录。这时,你可以拷贝这个标签页中的请求和参数去分析一个请求。

Neo4j知识库:初识Neo4j查询日志分析器

Query Timeline

Query Timeline是一个实验性的功能,它绘制出了每时间段(默认5分钟)查询总量和每秒种平均查询次数。它是基于日志文件中记录的时间,而不是查询开始时间。通过这张图,可以快速的了解到服务器是什么什么时候请求最多。

Neo4j知识库:初识Neo4j查询日志分析器


以上所述就是小编给大家介绍的《Neo4j知识库:初识Neo4j查询日志分析器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First HTML与CSS(第2版)

Head First HTML与CSS(第2版)

Elisabeth Robson、Eric Freeman / 徐阳、丁小峰 / 中国电力出版社 / 2013-9 / 98.00元

是不是已经厌倦了那些深奥的HTML书?你可能在抱怨,只有成为专家之后才能读懂那些书。那么,找一本新修订的《Head First HTML与CSS(第2版)》吧,来真正学习HTML。你可能希望学会HTML和CSS来创建你想要的Web页面,从而能与朋友、家人、粉丝和狂热的顾客更有效地交流。你还希望使用最新的HTML5标准,能够保证随时间维护和扩展你的Web页面,使它们在所有浏览器和移动设备中都能正常工......一起来看看 《Head First HTML与CSS(第2版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具