You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ktor服务器的引擎配置中限制客户端连接数?

控制Ktor WSS服务器的客户端连接数(Netty/CIO引擎)

直接通过引擎配置就能实现客户端连接数限制,无需在业务代码中循环检查用户ID,以下是Netty和CIO引擎的具体配置方式:

Netty引擎配置

Netty引擎通过maxConnections参数直接限制服务器同时处理的总连接数(包含HTTP和WebSocket连接),达到上限后新连接会被拒绝。

示例代码:

fun main() {
    embeddedServer(Netty, port = 8080, configure = {
        // 设置最大同时连接数,根据VPS资源调整
        maxConnections = 100
        // 可选:调整工作线程数,建议和CPU核心数匹配
        workerCount = Runtime.getRuntime().availableProcessors()
        // 可选:设置连接超时,清理无效连接
        connectionTimeout = 10.seconds
    }) {
        install(WebSockets) {
            pingPeriod = 30.seconds // 定期发送心跳维持连接
            timeout = 60.seconds     // 无活动连接超时时间
        }
        routing {
            webSocket("/ws") {
                // 你的WebSocket业务逻辑处理
            }
        }
    }.start(wait = true)
}

CIO引擎配置

CIO引擎使用maxConnectionsCount参数控制并发连接数,搭配requestQueueLimit设置连接队列上限(队列满后新请求直接被拒绝)。

示例代码:

fun main() {
    embeddedServer(CIO, port = 8080, configure = {
        // 设置最大活跃连接数
        maxConnectionsCount = 100
        // 可选:连接请求队列上限,超过则拒绝新请求
        requestQueueLimit = 20
        connectionTimeout = 10.seconds
    }) {
        install(WebSockets) {
            pingPeriod = 30.seconds
            timeout = 60.seconds
        }
        routing {
            webSocket("/ws") {
                // 你的WebSocket业务逻辑处理
            }
        }
    }.start(wait = true)
}

注意事项

  • 上述参数是全局连接限制,覆盖所有HTTP和WebSocket连接;如果需要仅针对WebSocket做限制,才需要在代码层面额外处理(但这是你想避免的场景)。
  • 连接数上限需根据VPS的CPU、内存资源合理设置,避免因资源耗尽导致服务崩溃。
  • 当达到连接上限时,客户端会收到连接失败的错误(如Connection refused或HTTP 503),无需在业务代码中额外处理连接拒绝逻辑。

内容的提问来源于stack exchange,提问作者Cool_Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:46:11