为什么gRPC抛出已建立的连接被主机中的软件中止?#34;只在Windows上的每一秒?

时间:2017-10-10 03:23:55

标签: java netty grpc grpc-java

在Windows ,我有一个grpc服务器,每秒都会抛出这个INFO级别的堆栈跟踪:

2017-10-09T20:11:00,366 - INFO  - [grpc-default-worker-ELG-1-13:io.grpc.netty.NettyServerTransport:grpc.netty.NettyServerTransport@159] - {} - Transport failed
java.io.IOException: An established connection was aborted by the software in your host machine
    at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[?:1.8.0_131]
    at sun.nio.ch.SocketDispatcher.read(Unknown Source) ~[?:1.8.0_131]
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source) ~[?:1.8.0_131]
    at sun.nio.ch.IOUtil.read(Unknown Source) ~[?:1.8.0_131]
    at sun.nio.ch.SocketChannelImpl.read(Unknown Source) ~[?:1.8.0_131]
    at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:288) ~[    ]
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1106) ~[netty-buffer-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:372) ~[netty-transport-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) [netty-transport-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645) [netty-transport-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580) [netty-transport-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497) [netty-transport-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459) [netty-transport-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-common-4.1.14.Final.jar:4.1.14.Final]
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138) [netty-common-4.1.14.Final.jar:4.1.14.Final]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]

这可能与https://github.com/grpc/grpc-java/issues/1768

中记录的内容相同

再一次,我只在Windows上出现此错误!

无论此问题如何,该应用似乎都能正常运行。

当我开始一个简单的'#hello world"使用io.grpc.Server的应用程序,我没有看到这个INFO堆栈跟踪。

但是当我使用我的真实应用程序打开了一个grpc服务器和一个在应用程序持续时间内保持打开状态的jetty服务器之间的双向http2流连接...我收到此消息每秒一次泛滥我的日志。

NettyServerTransport日志记录转为WARN级别是否安全?或者我应该担心此消息的频率?

1 个答案:

答案 0 :(得分:0)

我发现此消息即将发生,因为我们使用第三方Java应用程序上的tcp心跳检查器来查看我的服务是否已启动。

它发出InetSocketAddress(ip, port)请求以检查http2端口是否仍在响应。

每次执行此操作(仅在Windows上)时,它会转储出令人讨厌的堆栈跟踪。调查原因。

创建的问题:https://github.com/nddipiazza/grpc-java-bidirectional-streaming-example