Почему CockroachDB может закрывать соединение при большом вводе данных?
У меня есть база данных Cockroach on Kubernetes (AWS) и код Python для загрузки некоторых данных, основанных на psycopg2. Но когда я пытаюсь выполнить сложный запрос для 100К строк данных, получаю разрыв соединения после некоторого ожидания со следующей ошибкой:
psycopg2.DatabaseError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Единственные подозрительные записи в журналах о тараканах - это защита:
vendor/google.golang.org/grpc/server.go:666 grpc: Server.Serve failed to create ServerTransport: connection error: desc = "transport: http2Server.HandleStreams failed to receive the preface from client: EOF"
Первоначально я думал, что проблема связана с psycopg2.connection
объект и добавил keepalives_
параметры к connect()
вызов. И даже встроил некоторую пользовательскую функцию соединения, которая запускает простой запрос SQL, чтобы проверить, открыто ли соединение. Но кажется, что сам сервер ломает это, поскольку исключение поднимается во время cursor.execute(sql_query)
бежит.
Есть мысли, почему такое может случиться?
1 ответ
В настоящее время CockroachDB не справляется со «слишком большим вводом» идеальным образом, но мы надеемся улучшить его. См. https://github.com/cockreachdb/cockroach/issues/50330