客户端断开连接后Spring RSocket CPU使用率高

问题描述

我创建了一个支持 Spring RSocket 的简单 RSocket 端点:

@Controller
class SampleController {

    @MessageMapping("sample")
    fun sample(): Flux<ByteArray> {
        return Flux
            .fromIterable(generateSequence(1) { it + 1 }.asIterable())
            .delayElements(Duration.ofSeconds(2))
            .doOnNext { println(it) }
            .map { it.toString().toByteArray() }
    }
}

只要客户端连接并拉取数据,这就可以正常工作:

rsc tcp://localhost:8888 --stream --route sample

一旦我取消它,cpu 使用率就会达到 20%。如果我并行运行更多 rsc 个客户端,当我取消所有这些客户端时,cpu 使用率将超过 50%。

我试图寻找一些在服务器端进行清理的样本,但没有找到任何东西。此外,我已启用全局调试日志记录级别 (logging.level.root=DEBUG),但在客户端取消后日志中没有任何内容。我在想也许有某种自动重新连接机制可以启动并开始发送垃圾邮件请求。

那么,我是不是遗漏了什么,有没有这种行为方式?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)