【问题标题】:SockJS increase pool sizeSockJS 增加池大小
【发布时间】:2021-09-15 15:15:06
【问题描述】:

我正在使用 SocketJS 和 Stomp 通过后端 api 发送文件以进行处理。 我的问题是,如果同时完成两个以上的上传,上传功能就会卡住。

例如:

  • 用户 1 -> 上传文件 -> 后端正确接收文件
  • 用户 2 -> 上传文件 -> 后端正确接收文件
  • 用户 3 -> 上传文件 -> 后端不会被调用,直到其中一个 之前的上传尚未完成。

(一分钟后用户 1 完成上传,第三次上传开始)

我通过日志看到的错误如下:

2021-06-28 09:43:34,884 INFO  [MessageBroker-1] org.springframework.web.socket.config.WebSocketMessageBrokerStats.lambda$initLoggingTask$0: WebSocketSession[11 current WS(5)-HttpStream(6)-HttpPoll(0), 372 total, 26 closed abnormally (26 connect failure, 0 send limit, 16 transport error)], stompSubProtocol[processed CONNECT(302)-CONNECTED(221)-DISCONNECT(0)], stompBrokerRelay[null], **inboundChannel[pool size = 2, active threads = 2**, queued tasks = 263, completed tasks = 4481], outboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 607], sockJsScheduler[pool size = 1, active threads = 1, queued tasks = 14, completed tasks = 581444]

池大小似乎已满:

inboundChannel[池大小 = 2,活动线程 = 2

但我真的找不到增加尺寸的方法。

这是代码:

客户端

ws = new SockJS(host + "/createTender");
stompClient = Stomp.over(ws);

服务器端配置

@EnableWebSocketMessageBroker
public class WebSocketBrokerConfig extends AbstractWebSocketMessageBrokerConfigurer {

    ...
    ...

    @Override
    public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
        registration.setMessageSizeLimit(100240 * 10240);
        registration.setSendBufferSizeLimit(100240 * 10240);
        registration.setSendTimeLimit(20000);
    }

我已经尝试过更改 configureWebSocketTransport 参数,但没有成功。 如何增加套接字的池大小?

【问题讨论】:

    标签: websocket stomp sockjs


    【解决方案1】:

    使用此方法可以覆盖进入 WebSocket 的入站通道:

    @Override
    public void configureClientInboundChannel(ChannelRegistration registration) {
        registration.taskExecutor().corePoolSize(4);
        registration.taskExecutor().maxPoolSize(4)
    }
    

    The official documentation 建议池大小 = 核心数。当然,由于达到了 maxPoolSize,因此请求将通过内部队列进行处理。因此,在这种配置下,我可以同时处理 4 个请求。

    【讨论】:

    • 如果这是正确答案,请标记为正确答案。
    • @JustinBertram 我必须等待 21 小时才能将其标记为正确。
    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 2011-04-27
    • 2012-04-07
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多