websocket连接报错

websocket连接,网关不定时报这个错,这个应该怎么解决 Status and headers already sent


io.netty.channel.unix.Errors$NativeIoException: readAddress(..) failed: Connection timed out
    at io.netty.channel.unix.Errors.newIOException(Errors.java:122)
    at io.netty.channel.unix.Errors.ioResult(Errors.java:146)
    at io.netty.channel.unix.FileDescriptor.readAddress(FileDescriptor.java:178)
    at io.netty.channel.epoll.AbstractEpollChannel.doReadBytes(AbstractEpollChannel.java:348)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:794)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:408)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:308)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
    at java.lang.Thread.run(Thread.java:748)

2023-04-19 09:29:26.506 ERROR 1 --- [-server-epoll-6] o.s.w.s.adapter.HttpWebHandlerAdapter    : Failed to handle request [GET http://www.zdmgood.com:8766/api-i/webScoket/83-SA0005-appSendData]

java.lang.IllegalStateException: Status and headers already sent
    at reactor.ipc.netty.http.server.HttpServerOperations.status(HttpServerOperations.java:346)
    at org.springframework.http.server.reactive.ReactorServerHttpResponse.applyStatusCode(ReactorServerHttpResponse.java:67)
    at org.springframework.http.server.reactive.AbstractServerHttpResponse.lambda$null$4(AbstractServerHttpResponse.java:214)
    at reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:42)
    at reactor.core.publisher.Mono.subscribe(Mono.java:3080)
    at reactor.core.publisher.FluxConcatIterable$ConcatIterableSubscriber.onComplete(FluxConcatIterable.java:147)
    at reactor.core.publisher.FluxConcatIterable.subscribe(FluxConcatIterable.java:61)
    at reactor.core.publisher.MonoIgnoreElements.subscribe(MonoIgnoreElements.java:37)
    at reactor.core.publisher.Mono.subscribe(Mono.java:3080)
    at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.onNext(ChannelSendOperator.java:181)
    at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:198)
    at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:115)
    at reactor.core.publisher.FluxJust$WeakScalarSubscription.request(FluxJust.java:99)
    at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:156)
    at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:138)
    at org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.onSubscribe(ChannelSendOperator.java:163)
    at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:172)
    at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90)
    at reactor.core.publisher.FluxJust.subscribe(FluxJust.java:70)
    at reactor.core.publisher.FluxMapFuseable.subscribe(FluxMapFuseable.java:63)

这个错误信息是关于websocket连接的,大致意思是连接超时了,但是响应头和状态已经发送了。这种情况下,要先找到错误的根本原因,原因可能是请求太多导致资源不足,也可能是服务器的故障。下面是一些可能的解决方法:

检查你的网络连接,确保网络连接良好。

检查您的服务器资源,如内存,磁盘空间等,尝试增加资源限制。

检查您的服务器设置,确保它具有足够的并发连接以支持您的Websocket。

尝试减少连接的负载,例如减少并发连接或使用流量限制。

更新您的服务器或应用程序程序以最新版本,确保所有依赖项和库也是最新的。

更改您的服务器设置,以允许更多的并发连接。

可以检查服务端的配置ReadBufferSize 和 WriteBufferSize 配置,虽然看你的log信息,wss应该是java写的,但估计也就大同小异,可以参考我的这篇文章,改下服务器端配置测试一下。https://blog.csdn.net/zhang_yasong/article/details/130250812

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    很抱歉,由于该问题缺乏具体的场景和代码,无法得出具体的解决方案。需要更多的信息才能确定问题的根源并提供有效的解决方案。建议您提供更多的详细信息,包括您使用的操作系统、服务器、浏览器,以及代码示例等。谢谢!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^