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
Neo4j-Java-Driver GH 项目: https://github.com/neo4j/neo4j-java-driver/blob/1.6/examples/src/main/java/org/neo4j/docs/driver/SessionExample.java#L38
开发者文档: https://neo4j.ac.cn/docs/developer-manual/current/drivers/sessions-transactions/#driver-sessions
此页面是否有帮助?