neo4j遇到的阶段问题
发布于 6 年前 作者 shensh 2606 次浏览 来自 问答
  1. 对neo4j在一天时间内进行大量访问,发现内存升高的严重,有没有什么方法让neo4j的使用内存到达一定限制后不再增加?
  2. 能否对neo4j的访问进行黑白名单限制,即处在白名单列表中的ip才会被允许进行neo4j的连接?
  3. 调用neo4j的apoc里面的runTimebox经常异常,错误类型org.neo4j.driver.v1.exceptions.ClientException,请问大概是什么原因,应该怎么解决?
10 回复

1,在配置文件neo4j.conf中有配置 堆栈最大值 最小值,还有 分页最大值最小值 2、黑白名单功能 用反向代理就可以啊,比如NGINX 3、这个问题我得查查在告诉你~

您好,感谢您的回答,我有如下疑惑: 1、“在配置文件neo4j.conf中有配置 堆栈最大值 最小值,还有 分页最大值最小值”,这些参数dbms.memory.heap.initial_size、dbms.memory.heap.max_size、dbms.memory.pagecache.size我都进行和设置,但是还是会增加,所以我想弄清楚随着查询增加,为什么内存增加的这么严重?或者说neo4j的内存存放了哪些东西? 2、Neo4j结合NGINX做反向代理,应该怎么黑白名单,还请具体说说

1.dbms.memory.heap配置的是 java虚拟机堆栈,就是很吃内存的那种。 2.dbms.memory.pagecache 是neo4j从硬盘读进内存的分页缓存,索引之类的东西会存这里 3.NGINX配置 针对 入站地址的 黑白名单,你百度(谷歌)下吧,很多教程。

你的内存配置的是多少? 对ip进行限制在业务层处理或者直接用linux iptable处理 org.neo4j.driver.v1.exceptions.ClientException 应该是连接的时候用户名密码错误的原因,你改一下用户名密码试试,还有优先用bolt协议和http协议

@wkq278276130 您好,最近在测试,发现并发量起来后,会出现如下几个错误: 1、class org.neo4j.driver.v1.exceptions.TransientException, Message: org.neo4j.driver.v1.exceptions.TransientException: The transaction has been terminated. Retry your operation in a new transaction, and you should see a successful result. Explicitly terminated by the user. 或者 class org.neo4j.driver.v1.exceptions.TransientException, Message: org.neo4j.driver.v1.exceptions.TransientException: The transaction has been terminated. Retry your operation in a new transaction, and you should see a successful result. Transaction terminated, no more locks can be acquired. CommunityLockClient[66458] 2、class org.neo4j.driver.v1.exceptions.ClientException, Message: org.neo4j.driver.v1.exceptions.ClientException: Unable to read response from server: Expected a list, but got: b1

@wkq278276130 还有,应该不是用户名密码错误的原因,因为我做并发请求的时候,是间断性报这些错误。我采用的协议是bolt协议,采用的查询是apoc.runTimeBox

默认有一个事务时间。你执行超时了。你的session就会被杀掉。你看看你的所有语句里面有没有全表扫描的

@bingo 没有,我的查询都是按索引查的,可能查询起来相对比较复杂,而且一直觉得neo4j的并发不是很高

@pangguoming 您还,我看了您主编的Neo4j权威指南。里面Page-292关于neo4j的驱动配置提到,“在整个应用程序中,驱动可以跨多个线程进行全局共享”,但我我发现,全部共享会导致服务的内存相较于不共享高很多,而且并发能力也会低很多,请问这个大概是什么原因?

@shensh 就是drivier实例 全局只创建\使用一个就行,不要重复创建driver实例

回到顶部