当前位置: 首页 > 知识库问答 >
问题:

java - neo4j调试日志中大量Inbound message queue has exceeded high watermark是什么原因?有哪些影响?如何解决?

詹联
2023-12-26

项目中使用了neo4j,最近迁移了一个新环境,结果发现服务运行不稳定,有时候报错:在neo4j事务提交时,等待某个节点的锁超时(30秒),有时候驱动程序报错:客户端连接被终止。

因为之前对neo4j仅仅限于简单应用。所以对neo4j配置、日志等并不了解。
重新花时间了解了下neo4j的基本配置(主要是内存配置),尝试查看下neo4j的调试日志。

目前neo4j是放在docker容器运行的。配置方法如下:

services:  neo4j:    image: bitnami/neo4j:5.3.0    environment:      NEO4J_PASSWORD: 12345678    ports:      # 客户端页面访问端口      - "7474:7474"      # bolt协议访问端口          - "7687:7687"    volumes:      - "./neo4j_data:/bitnami/neo4j/data"      # 内存及其它配置(详见neo4j.conf文件内中文说明)      - "./conf:/bitnami/neo4j/conf"      # 日志      - "./logs:/opt/bitnami/neo4j/logs"    restart: always

在neo4j.conf配置中,主要设置了最大内存4G(因为neo4j中节点的数量为 61万个,感觉4G应该足够用了):

# 修改内存设置server.memory.heap.initial_size=256mserver.memory.heap.max_size=4096m

目前查看neo4j的调试日志,发现有大量的 Inbound message queue has exceeded high watermark - Disabling message processing,那么这些错误会带来什么影响呢?会导致事务执行失败?还是仅仅是响应速度慢?应该如何解决呢?

共有1个答案

郎意
2023-12-26

Inbound message queue has exceeded high watermark - Disabling message processing这个错误表示在处理接收到的消息时,队列已经超过了设定的上限,因此消息处理被禁用。这种情况通常发生在服务器接收到的请求过多,处理不过来的时候。

这种错误的影响有:

  1. 性能问题:由于消息处理被禁用,那些需要处理的请求将会被阻塞,导致响应时间增加,甚至可能引起超时。
  2. 稳定性问题:如果这种状况持续发生,并且没有被妥善处理,那么可能会影响到服务器的稳定性,可能会导致服务器崩溃或者重启。

解决这个问题的方法主要有:

  1. 优化查询:检查你的查询是否可以优化。例如,你可以使用索引来加速查询,减少需要处理的数据量。
  2. 调整服务器配置:根据你的实际需求和资源情况,你可能需要增加服务器的内存,或者增加服务器的数量。在Neo4j的配置文件中,你可以调整dbms.input_message_queue.high_water_mark的值,来设置更高的队列大小上限。注意,这可能会导致你的服务器使用更多的内存。
  3. 限制并发连接数:如果你的服务器收到了过多的并发连接,你可能需要限制并发连接的数量。你可以在Neo4j的配置文件中设置dbms.connector.bolt.accept_countdbms.connector.http.accept_count来控制最大连接数。
  4. 优化数据模型:检查你的数据模型,看看是否可以删除不必要的节点和关系,或者使用更适合你的查询的数据模型。
  5. 升级Neo4j版本:如果你使用的是较旧的Neo4j版本,那么升级到最新版本可能会解决这个问题,因为新版本可能包含性能改进和bug修复。
 类似资料:
  • 本文向大家介绍移动端滚动穿透是什么原因?有哪些解决方案?相关面试题,主要包含被问及移动端滚动穿透是什么原因?有哪些解决方案?时的应答技巧和注意事项,需要的朋友参考一下 https://segmentfault.com/a/1190000020321154

  • 主要内容:CPU,内存,磁盘读写(I/O)能力,网络带宽评价 Linux 系统性能的好坏,大致可以从 Linux 完成任务的有效性、稳定性以及响应速度等方面进行考量。作为 Linux 系统管理员,可能经常会遇到系统不稳定、响应速度慢等问题。 例如,在 Linux 系统搭建了一个 Web 服务,就可能出现网页无法打开、打开速度慢等现象,而遇到这些问题时,有人可能会抱怨 Linux 系统不好,其实这些不过是表面现象。 要知道,操作系统在完成某个任务时,与系

  • 我第一次听说记号是在看书的时候: http://slf4j.org/faq.html 我检查了Logger对象的可用方法: null null 我从以下方面获得了更深入的信息: http://logback.qos.ch/manual/filters.html 但我还是一头雾水...请注意,我问的是为什么,而不是如何使用它们,所以这不是: null

  • 我正在使用GCC为ARM开发一个C。我遇到了一个问题,我没有启用优化,我无法为我的代码创建二进制(ELF),因为它不适合可用空间。然而,如果我只是启用调试优化(-Og),这是我所知的最低优化,代码很容易适合。 在这两种情况下,都启用了-ffunction-节、-fdata-节、-fno-异常和-Wl、--gc-节。 闪存大小:512 kB 没有优化:. text溢出约200 kB 使用-Og优化:

  • 问题内容: DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DD”异常。 DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DU”异常。 DD和DU听起来很熟悉…我想在涉及最差的前后条件的测试和分析中说些什么,但我不记得具体情况。 NullAssignment:将Objec

  • 问题内容: 我正在读一本书,遇到过Java中的“影子变量”一词,但没有描述。最终,这些变量是做什么用的,以及如何实现? 问题答案: 除了提供我自己的描述之外,我可能会要求您例如在以下位置阅读它:http : //en.wikipedia.org/wiki/Variable_shadowing。了解变量的阴影后,建议您继续阅读有关覆盖/阴影方法和可见性的一般知识,以全面了解此类术语。 实际上,由于该