启动WSO2 API Manager 3.2.0后频繁出现IOException、EOFException错误的原因是什么
WSO2 APIM启动时连接重置类错误排查方案
我在启动WSO2 API Manager和网关节点后,日志中出现如下错误:
TID: [-1] [] [2021-07-06 07:50:51,388] ERROR {org.wso2.carbon.databridge.receiver.binary.internal.BinaryDataReceiver} - Error while reading from the socket. java.io.EOFException: Connection closed from remote end. at org.wso2.carbon.databridge.commons.binary.BinaryMessageConverterUtil.loadData(BinaryMessageConverterUtil.java:39) at org.wso2.carbon.databridge.receiver.binary.internal.BinaryDataReceiver$BinaryTransportReceiver.run(BinaryDataReceiver.java:258) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) TID: [-1] [] [2021-07-06 07:50:52,753] ERROR {org.wso2.andes.transport.network.mina.MinaNetworkHandler} - Exception caught by Mina java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:197) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:198) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:45) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:485) at org.wso2.org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.lang.Thread.run(Thread.java:748) TID: [-1] [] [2021-07-06 07:50:52,757] ERROR {org.wso2.andes.server.protocol.MultiVersionProtocolEngine} - Error establishing session java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:197) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:198) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:45) at org.wso2.org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:485) at org.wso2.org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.lang.Thread.run(Thread.java:748)
该错误在使用默认deployment.toml启动、以及按部署需求完成配置后启动都会触发,暂未影响API创建/发布、应用订阅及密钥生成等核心功能,部署环境为AWS EC2实例。
错误原因及解决方法
这两类报错均为启动阶段的非致命错误,本质是内部端口收到未完成的连接请求后被主动断开,不会影响核心业务运行,可按以下方向排查优化:
- 针对
BinaryDataReceiver类EOF报错:该报错来自APIM用于指标上报、流量统计的二进制传输端口(默认9611/9711),要么是公网扫描流量触碰到了对外开放的内部端口,要么是未启用分析组件但默认配置仍保留了指标上报逻辑。如果不需要使用内置的流量分析功能,可直接在deployment.toml中添加以下配置关闭对应功能:[apim.analytics] enable = false [metrics] enabled = false - 针对
Andes类连接重置报错:Andes是APIM内置的消息代理组件,用于异步事件、分布式限流等场景,报错多为启动阶段服务初始化顺序问题,内部连接请求发出时Broker还未完成启动就被重置。如果不需要使用异步消息、分布式限流等高级特性,无需额外处理,也可将内置Broker的监听端口限制为仅回环地址访问,避免公网流量触发报错。 - AWS EC2环境专项检查:
- 安全组配置不要将9611、9711、5672等内部端口对公网开放,仅允许实例本身、同VPC内的APIM节点访问这些端口,避免公网扫描触发无效连接报错
- 检查EC2实例配置不低于2核4G,资源不足导致启动阶段初始化过慢,也会出现内部连接超时断开的报错
如果核心功能运行正常,也可直接忽略这些启动阶段的临时报错,不会对后续运行产生影响。
内容的提问来源于stack exchange,提问作者Jefledge
相关产品推荐
相关产品推荐

