首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Neo4j随机高CPU

Neo4j随机高CPU
EN

Stack Overflow用户
提问于 2021-04-09 12:09:33
回答 1查看 28关注 0票数 0

Neo4j 3.5.12社区版

Ubuntu Server 20.04.2

RAM: 32 Gb

具有4个或8个CPU的EC2实例(我将其更改以适应当前的处理)

数据库文件:6.5

Python、WSGI、Flask

dbms.memory.heap.initial_size=17g

dbms.memory.heap.max_size=17g

dbms.memory.pagecache.size=11g

我看到服务器上的CPU使用率很高,这似乎是一个随机模式。我已经分析了我知道人们在这些时间访问的所有页面的所有查询,它们都在所有情况下都进行了优化,执行时间都在50ms以下。CPU使用率似乎与用户数无关,因为用户数在大多数时候都很低(最多40个并发用户)。我也检查了cron job中的所有查询。

我显著地减少了数据库注释,这对性能没有任何影响。

我通过使用MATCH (n) OPTIONAL MATCH (n)-[r]->() RETURN count(n.prop) + count(r.prop);将所有节点预加载到ram中来预热数据库

这种模式是,CPU使用率会有几分钟非常低(正如我在这个设置中对这些用户数的预期),然后大多数CPU核心上的处理会上升到90%s,并且机器对新请求变得没有响应。更改为8CPU实例会对其进行排序,但对于这种级别的流量来说应该不需要。

我想用查询日志来分析查询,但是社区版不支持这一点。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-04-09 14:07:31

运行perf之类的CPU profiler来记录CPU时间被花在哪里。然后,您可以将其可视化为FlameGraph,或者,由于您的突发只以随机间隔发生,因此可以使用Netflix的FlameScope随时间可视化它

由于Neo4j是一个Java应用程序,因此研究一下async-profiler可能也是值得的,因为它在分析Java应用程序时是无价的(它会生成类似的FlameGraphs,并且可以输出与FlameScope或JMC兼容的日志文件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67014954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档