当前位置: 首页 > news >正文

vss-performance 有界Channel与并发容器容量

06 有界 Channel 与并发容器容量

试用安装包下载 | SMS | 在线演示

项目地址:https://github.com/openskeye/go-vss

背景

高并发服务中无界队列会在故障或下游变慢时把内存耗尽;小队列则频繁阻塞生产者。并发 Map 若频繁扩容也会带来 CPU 与 GC 压力。VSS 在ServiceContext初始化时为 channel 与xmap指定了统一的容量策略

项目中的做法

1. 有界 channel:多数为 100

例如SipSendCatalogSipSendVideoLiveInviteWSProc各通道、SipLog等均为make(chan T, 100)

含义:

  • 背压:当SendLogic处理不过来时,写入方会阻塞在 send(或可选用select+default丢弃——当前以阻塞为主,依赖上游超时)。
  • 边界可预期:最坏情况下队列中待处理消息条数有上限,便于估算内存(每条消息指针 + 负载)。

满则阻塞

生产者
HTTP/WS/定时器

chan T, cap=100

消费者
SendLogic

2.xmap/set初始容量:1000 量级

SipCatalogLoopMapAckRequestMapPubStreamExistsStateInviteRequestState等使用1000作为预分配 hint(具体以service_context.go为准)。

  • 减少 rehash / 扩容:设备与流规模在千级时,命中预设桶大小可降低分配次数。
  • xmap不是硬性上限xmap仍可增长;若单机万路以上,应结合监控观察Len()与内存。

长生命周期键

高频短消息

控制突发排队

少扩容

buffer 100

hint 1000

延迟稳定

CPU/GC 更稳

要点

  1. 调大 channel:信令尖峰仍丢包时,可先调大缓冲换时间;但若持续满载,应加机器优化单条处理耗时
  2. 调大 map hint:在已知设备数规模时,把 hint 调到1.2× 预期设备数可减少扩容;过大则浪费初始内存。
  3. 泄漏排查AckRequestMapSipCatalogLoopMap等若未 Remove,Map 调涨——配合 SSE状态中的计数做告警。

相关代码路径

  • core/app/sev/vss/internal/svc/service_context.go
http://www.jsqmd.com/news/898502/

相关文章:

  • 保姆级教程:用ICC2的Power Network Synthesis搞定芯片供电网络(含IR Drop避坑指南)
  • MathLive:网页数学公式编辑的革命性解决方案
  • 南洋理工团队发布分层Agent框架:一句话生成短剧,质量可控但降本仍待突破
  • 从氛围感到硬实力:程序员面试准备的核心陷阱与实战清单
  • 想定制卫浴行业批零兼营跨境营销站该选谁? WaiMaoYa 外贸鸭提供一站式建站服务 - 外贸独立站运营
  • 告别手动拷贝!用VS2019 Installer Projects插件,一键打包C# Winform程序和MySQL数据库
  • 非理想RIS辅助OSTBC系统性能分析与优化:从理论建模到低复杂度算法
  • 仅限内部技术团队流通:ChatGPT角色扮演安全边界白皮书(含GDPR/等保2.0双合规校验表)
  • Pixelle-Video:AI全自动短视频引擎,让视频创作像聊天一样简单
  • 使用curl命令直接测试Taotoken聊天接口的快速入门指南
  • 想制作水产品行业原生 B2B+B2C 双模一体外贸官网选哪家? WaiMaoYa 外贸鸭是专业的出海建站服务商 - 外贸营销驿站
  • MapleStory游戏资源编辑终极指南:从新手到专家的完整教程
  • 想运营陶瓷行业展示 + 询盘 + 零售外贸网站选哪家? WaiMaoYa 外贸鸭擅长打造高转化外贸站点 - 外贸独立站运营
  • 避坑指南:CANopen主从站PDO映射配置,为什么你的数据总对不上?
  • ChatGPT餐厅推荐生成失效真相(实测137家商户数据):当LLM遇上POI冷启动、口味漂移与节假日效应
  • 如何通过 Taotoken 模型广场快速选型并获取适合文本总结任务的大模型
  • 想建设五金行业询盘 + 零售 一站全搞定海外网站找哪家合作? WaiMaoYa 外贸鸭深耕外贸建站多年 - 外贸营销驿站
  • 告别踩坑!Windows 10/11 本地一键部署RocketMQ 4.8.0及控制台(保姆级图文)
  • 构建自动化内容引擎:从API集成到工作流设计的实战指南
  • AI芯片分布式系统:从固定代理到可插拔内核:DLOS Kernel v1.3 中的微内核与热插拔 Agent 系统
  • 告别驱动烦恼:在Ubuntu 16.04上一步步搞定CY7C68013A USB开发板的Linux环境
  • 别再瞎调了!Unity Canvas Scaler三种模式实战对比,附可运行的测试项目源码
  • 利用ToF相机深度失真实现材料分类:原理、实践与挑战
  • harness 与 hermes-agent 应用层次、用户与场景
  • 想运营储能行业原生 B2B+B2C 双模一体外贸网站找哪家合作? WaiMaoYa 外贸鸭是专业的出海建站服务商 - 外贸营销驿站
  • 基于MCP协议为AI智能体构建文件风险感知系统
  • Brew 包管理工具高效开发场景实战
  • 电话号码地理定位技术方案:基于Web服务的实时位置映射系统
  • 如何永久备份微信聊天记录?3步实现数据自主与隐私保护
  • 电脑加域后别慌!手把手教你找回Navicat里丢失的数据库连接(附注册表工具)