在AWS EC2实例上运行neo4j 2.0.1社区版。 在一些读取请求之后,Neo4J服务器卡在接近100%的CPU上。
即使没有读取或写入,CPU也会继续接近100%。
ubuntu'top'命令只显示一个消耗CPU的java进程。 我该如何调试?我怎么知道neo4j正在做些什么来保持CPU接近100%
更新: 我不断看到GC日志:
70356.833: [GC 485305K->421306K(590488K), 0.0023720 secs]
70356.873: [GC 485498K->421273K(590488K), 0.0023950 secs]
70356.917: [GC 485465K->421152K(590488K), 0.0027120 secs]
70356.961: [GC 485344K->421407K(590488K), 0.0023500 secs]
70357.004: [GC 485599K->421205K(590488K), 0.0034150 secs]
70357.049: [GC 485397K->421174K(590488K), 0.0027470 secs]
70357.097: [GC 485366K->421335K(590488K), 0.0022430 secs]
70357.140: [GC 485527K->421615K(590488K), 0.0024140 secs]
70357.189: [GC 485807K->421826K(590488K), 0.0025360 secs]
70357.237: [GC 486018K->422124K(590488K), 0.0031070 secs]
70357.285: [GC 486316K->421844K(590488K), 0.0024500 secs]
70357.325: [GC 486036K->421985K(590488K), 0.0024550 secs]
70357.365: [GC 486177K->422020K(590488K), 0.0028860 secs]
70357.411: [GC 486212K->421787K(590488K), 0.0025340 secs]
70357.457: [GC 485979K->421863K(590488K), 0.0027430 secs]
70357.505: [GC 486055K->422085K(590488K), 0.0023570 secs]
70357.553: [GC 486277K->422297K(590488K), 0.0024670 secs]
70357.601: [GC 486489K->422474K(590488K), 0.0023700 secs]
即使没有查询,我也会看到GC日志很长时间。我认为GC正在消耗接近100%的CPU(或其他什么?)。
当CPU接近100%时,Java-neo4j线程转储: https://onedrive.live.com/redir?resid=49F6403CD7EC37D4!107&authkey=!AM_esZ8nS-iPRCQ&ithint=file%2clog
答案 0 :(得分:0)
查看您提供的线程转储,我可以看到6个打开的查询,这些查询运行已经通过其余端点进入的请求(或者至少我是如何解释这些行 - at org.neo4j.server.rest.repr.CypherResultRepresentation.serialize(CypherResultRepresentation.java:83
)所有这些发生在 RUNNABLE 状态。)
就像@JimBaird所说的那样,我认为你可能有一些你认为已经运行的查询,但实际上是在后台晃动你的机器。
不幸的是,我不认为你可以杀死一个慢查询,所以你可能需要尝试重新启动它。