0

使用 wso2 msf4j 启动微服务在一台不间断机器上抛出错误 4022 套接字异常,但在包括 j 和 l 系列在内的多台其他机器上工作正常。我们目前使用的是 msf4j 2.1.0、ws02 5.1 和 Netty 4.0.3。大多数设置保持默认,我们只提供启动服务所需的配置值。

我们尝试使用 ipv6 设置 TCP 堆栈,但仍然失败,确保套接字端口可用并使用显示端口可用的测试程序测试套接字端口,并尝试使用比可用接收缓冲区更多的字节该系统使用java声明最大约1mb,除非直接使用C代码完成,否则不会产生症状。

我们不知道下一步该做什么。调用服务时是否可以使用参数设置 Netty 缓冲区大小?

预期输出是服务能够在端口上启动。

收到的堆栈跟踪是:

Exception: java.net.SocketException: Invalid function argument (errno:4022)
    2019-06-11 11:28:02 DEBUG - io.netty.channel.ChannelException: java.net.SocketEx
    ception: Invalid function argument (errno:4022)
               at io.netty.channel.socket.DefaultServerSocketChannelConfig.setReceiv
    eBufferSize(DefaultServerSocketChannelConfig.java:123)
               at io.netty.channel.socket.DefaultServerSocketChannelConfig.setOption
    (DefaultServerSocketChannelConfig.java:78)
               at io.netty.channel.DefaultChannelConfig.setOptions(DefaultChannelCon
    fig.java:113)
               at io.netty.bootstrap.ServerBootstrap.init(ServerBootstrap.java:152)
               at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBoots
    trap.java:308)
               at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java
    :271)
               at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:2
    67)
               at org.wso2.carbon.transport.http.netty.listener.NettyListener.startT
    ransport(NettyListener.java:103)
               at org.wso2.carbon.transport.http.netty.listener.NettyListener.start(
    NettyListener.java:69)
               at org.wso2.carbon.kernel.transports.CarbonTransport.startTransport(C
    arbonTransport.java:47)
               at java.util.HashMap$Values.forEach(HashMap.java:980)
               at org.wso2.carbon.kernel.transports.TransportManager.startTransports
    (TransportManager.java:61)
               at org.wso2.msf4j.MicroservicesRunner.start(MicroservicesRunner.java:
    191)
               at com.xypro.nonstop.main.AppInitializer.main(AppInitializer.java:147
    )
    Caused by: java.net.SocketException: Invalid function argument (errno:4022)
               at sun.nio.ch.Net.setIntOption0(Native Method)
               at sun.nio.ch.Net.setSocketOption(Net.java:334)
               at sun.nio.ch.ServerSocketChannelImpl.setOption(ServerSocketChannelIm
    pl.java:151)
               at sun.nio.ch.ServerSocketAdaptor.setReceiveBufferSize(ServerSocketAd
    aptor.java:190)
               at io.netty.channel.socket.DefaultServerSocketChannelConfig.setReceiv
    eBufferSize(DefaultServerSocketChannelConfig.java:121)
               ... 13 more
4

0 回答 0