Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Npsql在windows托管的postgres时间刻度服务器上超时二进制导入(复制二进制)_Windows_Postgresql_.net Core_Timescaledb - Fatal编程技术网

Npsql在windows托管的postgres时间刻度服务器上超时二进制导入(复制二进制)

Npsql在windows托管的postgres时间刻度服务器上超时二进制导入(复制二进制),windows,postgresql,.net-core,timescaledb,Windows,Postgresql,.net Core,Timescaledb,您好,我在执行对windows上托管的postgres timescale服务器的复制二进制调用时遇到问题。复制二进制操作被抽象为.Net的NpSql库中的binaryimport 在开发过程中,我使用了一个docker容器来运行timescale db的docker映像,它工作得非常好,但是在尝试在windows上部署postgres之后,我遇到了很多问题 我能够启动复制操作并精确复制72539行。数据以块的形式从外部api收集,在添加新行之间可能会有暂停,因为某些调用可能不会返回任何数据。w

您好,我在执行对windows上托管的postgres timescale服务器的复制二进制调用时遇到问题。复制二进制操作被抽象为.Net的NpSql库中的binaryimport

在开发过程中,我使用了一个docker容器来运行timescale db的docker映像,它工作得非常好,但是在尝试在windows上部署postgres之后,我遇到了很多问题

我能够启动复制操作并精确复制72539行。数据以块的形式从外部api收集,在添加新行之间可能会有暂停,因为某些调用可能不会返回任何数据。windows防火墙是否可能因为这些暂停而关闭连接?如果是这样,我该如何缓解这种情况

下面是我的应用程序的stacktrace和postgres服务器的日志:

Npgsql.NpgsqlException (0x80004005): Exception while writing to stream
       ---> System.TimeoutException: Timeout during writing attempt
         at Npgsql.NpgsqlWriteBuffer.Flush(Boolean async, CancellationToken cancellationToken)
         at Npgsql.TypeHandling.NpgsqlSimpleTypeHandler`1.<>c__DisplayClass12_0`1.<<WriteWithLengthInternal>g__WriteWithLengthLong|0>d.MoveNext()
      --- End of stack trace from previous location ---
         at Npgsql.NpgsqlBinaryImporter.Write[T](T value, NpgsqlParameter param, Boolean async, CancellationToken cancellationToken)
         at Npgsql.NpgsqlBinaryImporter.WriteRow(Boolean async, CancellationToken cancellationToken, Object[] values)

我相信我找到了解决问题的办法。该操作运行时间很长,中间有一些停顿。这似乎会导致windows在一段时间后关闭tcp连接。因此,我必须在连接字符串中使用
Tcp Keepalive
参数来防止windows关闭连接()

2021-05-25 08:33:33.422 CEST [27136] ERROR:  unexpected EOF on client connection with an open transaction
2021-05-25 08:33:33.422 CEST [27136] CONTEXT:  COPY tag_log, line 72539, column log_value
2021-05-25 08:33:33.422 CEST [27136] STATEMENT:  COPY tag_log 

            (tag_id, log_ts, log_value) 

            FROM STDIN (FORMAT BINARY)
2021-05-25 08:33:33.429 CEST [27136] FATAL:  terminating connection because protocol synchronization was lost
2021-05-25 08:33:33.430 CEST [27136] LOG:  could not send data to client: An established connection was aborted by the software in your host machine.