标准答案
- 按用户、租户、IP 和全局限制连接数,建立连接时校验身份、权限和空闲超时。
- 应用心跳应有间隔、超时和关闭策略,TCP keepalive 只能辅助检测传输层死连接。
- 广播使用有界发送队列、批量或分片,慢客户端超过缓冲上限时断开、降级或只发送最新状态。
- 监控连接数、心跳失败、发送队列、消息延迟、广播扇出和文件描述符。
题目解析
长连接把连接管理从一次请求延长为持续资源占用,因此要限制用户、租户和实例连接数,并为身份、空闲和最大生命周期设置边界。TCP 连接仍在不等于业务客户端可用。
广播成本取决于消息大小、扇出数量和最慢客户端。无限缓存会让一个慢客户端占用内存并拖累发送线程,应使用有界队列、丢弃旧状态或断开降级。
应用心跳要包含超时和清理策略,消息发送要异步化并设置背压。验证时观察发送队列年龄、消息延迟、心跳失败和文件描述符,而不是只看连接数。
常见误区
- 误区:无限缓存慢客户端消息。改正:设置发送缓冲上限,按业务选择丢弃、只保留最新状态或断开客户端。
- 误区:只依赖 TCP 连接存在判断业务在线。改正:使用应用层心跳、响应超时和业务鉴权状态判断可用性。
- 误区:广播时同步阻塞所有连接。改正:隔离发送任务并实施背压,不能让一个慢客户端阻塞整个广播循环。