我与一个相当大的Neo4J合作,有超过60,000个节点。每个节点约有4~5个属性和简单的父-母和母和母和母关系。当与60,000个节点合作时,特别是在昂贵和重复的问询中,我通过 Neo4J 的 REST 界面获得500个 HTTP 错误。
在浏览日志后, 我发现 Java 堆积空间是问题所在。 我将 512 MB 限值调高到 2048 MB, 但仍给我500 。 如果我把堆积设为 3GB 或 4GB, 新四j 甚至没有开始 。 我用一台相当好的笔记本电脑测试这个( 5, 4GB RAM), 我真的想知道这个程序是否是一个配置问题, 或者应用程序是否在我的服务器上运行正常( 亚马逊超大型高CPU 实例 ) 。 是否有某种缓存可以帮助我更快地得到东西? 基本上, 我反复在全部节点网络上进行过滤 。
我有两个问题,第一个是:
start referrer=node(3) match path=referrer-[*1..1]->referral return referral
然后,我必须发现他所有层次的所有节点, 返回第一个层次的节点和节点, 然后返回第一层的节点和节点。
start referrer=node(3) match path=referrer-[*1..1]->firsttier-[*0..]->referral return referral, firsttier, length(path)
它工作完美,而且速度很快。 然而, 我这样做是为了我的网络中的所有节点。 我在一个循环中同时处理两个查询( 并应用商业逻辑) 。 这个循环运行了60,000次 。
现在,我在笔记本电脑上测试这个, 但是,这个“Task”已经准备好进行发行处理, 因为我已经用零MQ做了所有的东西。 循环发送信息给工人和工人可以查询。