并发写入时出现 Neo4j 500 内部服务器错误
Neo4j 500 Internal Server Error on concurrent writes
我在对 Neo4j 执行并发写入时偶尔会遇到 500 内部服务器错误。下面的查询示例。
MATCH (u1:User {id:{id1}})
MATCH (u2:User {id:{id2}})
MERGE (u1)-[:FOLLOWS]->(u2)
对于非常受欢迎的用户,您可以体验到 u2
节点的大量并发关系创建。
目前我正在明确处理 DeadlockDetectedException
并且有一个重试逻辑。但有时我会从服务器获得 500,响应正文如下。
<html>
<head><title>500 Internal Server Error</title></head>
<body bgcolor="white">
<center><h1>500 Internal Server Error</h1></center>
<hr><center>nginx</center>
</body>
</html>
这让我不知道服务器上发生了什么。如果我处理它并执行重试,一切都会按预期进行。但这看起来很狡猾,因为我基本上猜测在这种特殊情况下发生了死锁,这可能是错误的并且与实际的服务器错误无关。
此问题与我们的 ngnix 框配置有关,该配置在某些情况下给出通用 500 而不是传播 DeadlockDetectedException
。
我在对 Neo4j 执行并发写入时偶尔会遇到 500 内部服务器错误。下面的查询示例。
MATCH (u1:User {id:{id1}})
MATCH (u2:User {id:{id2}})
MERGE (u1)-[:FOLLOWS]->(u2)
对于非常受欢迎的用户,您可以体验到 u2
节点的大量并发关系创建。
目前我正在明确处理 DeadlockDetectedException
并且有一个重试逻辑。但有时我会从服务器获得 500,响应正文如下。
<html>
<head><title>500 Internal Server Error</title></head>
<body bgcolor="white">
<center><h1>500 Internal Server Error</h1></center>
<hr><center>nginx</center>
</body>
</html>
这让我不知道服务器上发生了什么。如果我处理它并执行重试,一切都会按预期进行。但这看起来很狡猾,因为我基本上猜测在这种特殊情况下发生了死锁,这可能是错误的并且与实际的服务器错误无关。
此问题与我们的 ngnix 框配置有关,该配置在某些情况下给出通用 500 而不是传播 DeadlockDetectedException
。