知识库

java.lang.OutOfMemoryError: 无法创建新的原生线程

当客户端应用程序通过 bolt 或 bolt+routing 协议与 Neo4j 服务器建立会话时,服务器会分配一个线程作为服务器端 bolt 工作线程来处理该连接。 Neo4j 服务器生成的 bolt 工作线程数量没有服务器端限制,因此 JVM 有可能耗尽原生线程。具体数量取决于服务器硬件规格,但可能达到数千个。

如果您在 Neo4j 服务器的 debug.log 或 neo4j.log 中发现类型为 java.lang.OutOfMemoryError: unable to create new native thread 的异常,这几乎可以肯定是因为客户端未在您的应用程序代码中正确关闭会话。

2017-12-14 00:00:35.710+0000 ERROR [o.n.b.t.SocketTransportHandler] Fatal error occurred when handling a client connection: unable to
create new native thread unable to create new native thread
java.lang.OutOfMemoryError: unable to create new native thread

解决此问题的方法是检查您的应用程序代码中所有创建 Session 对象的地方,并验证它们是否遵循了文档中的指导。例如,如果您正在使用 Neo4j Java 驱动程序,请使用 try-with-resources

© . All rights reserved.