单聊压测结论:华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD)同时在线及压测客户端数量:1万每秒钟发送消息量:2300条;从发送到对方接收平均消息延时:5秒群聊压测结论:华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD)群规模:1万人同时在线人数:1千人每秒发送消息量:500条;从发送到对方接收平均消息延时:6秒注:(1)客户端和服务端在同一台机器,不消化网络带宽;(2)未使用nginx反向代理服务器资源华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD)
文章图片
OpenIM配置信息(一)服务端配置调整 config/config.yaml 以8核16G为例(1)openImMessagePort: [ 10130, 10131, 10132, 10133, 10134,10135 ](2)openImPushPort: [ 10170, 10171, 10172, 10173 ](3)remainLogLevel: 3(4)chatpersistencemysql: false(5) dbMaxOpenConns: 100dbMaxIdleConns: 10dbMaxLifeTime: 5(二)调整path_info.cfg中msg_transfer_service_num=4(三)kafka分区调整(1)设置ws2ms_chat为8个分区 msg_transfer_service_num的2倍(2)设置msg_to_mongo为8个分区 msg_transfer_service_num的2倍(3)设置ms2ps_chat为8个分区 openImMessagePort的2倍(四)mysql服务端设置最大连接数为2000(五)etcd kafka redis mongo都是单机部署启动单聊压测(1)启动1万个压测客户端,发送1000万消息,出现[send msg begin ] 表示初始化连接及登录完毕,开始发送消息./press_open_im-sn 10000 -mn 1000 -t 4000(2)查看连接数约2万个连接,由于压测客户端在本机,所有连接数乘2(3)查看消息收发量,每秒2377条消息压测tail -f OpenIM.log.all.2022-09-02|grep "msg_gateway sendMsgCount"(4)启动消息延时检测程序,在此压力下,消息从发送方发出到接收方成功接收大概需要5秒./msg_delay_open_im -sn 2 -mn 100 -t 100单聊压测结论华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD),在每秒收发2377条单聊消息时,消息平均延时在5秒左右。cpu 100%, 内存80% (压测程序占用了15%内存),消息入库会导致redis/mongodb内存增加
文章图片
【开源IM项目OpenIM单聊及万人群压测报告】
文章图片
文章图片
启动万人群聊压测(1)创建一个万人群组./create_work_group_open_im -gmn 10000创建完毕,groupID为3282359177(2)模拟群3282359177中1000个成员登录并往群里发送消息,每秒发送500条消息。出现[send msg begin ] 表示初始化连接及登录完毕,开始发送消息./press_open_im -gid 3282359177 -sn 1000 -mn 1000 -t 2000(3)查看消息收发量,每秒500条消息tail -f OpenIM.log.all.2022-09-02|grep "msg_gateway sendMsgCount"(4)启动消息延时检测程序,在此压力下,消息从发送方发出到接收方成功接收大概需要6秒./msg_delay_open_im -gid 3282359177-mn 100 -t 100万人大群压测结论华为云主机s3一台:8核16G内存,网络带宽10Mb,普通磁盘(非SSD),群成员1万人,同时在线 1千人,每秒往群内发送500条消息,,消息平均延时在6秒左右。cpu 45%, 内存70% (压测程序占用了15%内存),消息入库会导致redis/mongodb内存增加关于OpenIMOpenIM是由IM技术专家打造开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时通讯、实时通讯能力快速集成到自身应用中,并确保业务数据的安全性和私密性。github社区活跃,star近万,排名遥遥领先,开发者万人,OpenM力争开源IM项目No1,打造开源IM第一社区。开源IM OpenIM最近更新如下,请各位知悉:1、pc端允许开多个实例,即一台电脑可以同时登陆多个不同的账号;2、app发现页后台动态配置url;3、pc在多台电脑上同时登录同一个账号不互踢, 手机端统一平台互踢;4、后台给全员发送广播消息,触达所有用户;5、网络重连提示、消息同步开始和结束提示;6、后台客户IP显示查询功能,可拉黑指定IP ,可查询相同ip账户注册量 ;拉黑ip不能注册,也不能登录系统;7、后台可设置注册成功自动添加指定好友;
8、指定账号可设置指定多个IP才能登录;9、未读数多端同步,卸载重装未读数同步,解决多端在线时未读数实时同步问题,解决多端离线再登录后未读数同步同步github地址:https://github.com/OpenIMSDK/...开发者中心:https://doc.rentsoft.cn/#/
文章图片
单聊压测程序仓库地址https://github.com/OpenIMSDK/...代码说明press_open_im.go 压测消息发送,但发送者不校验是否完成接收到msg_delay_open_im.go 检测消息发送和接收,在大压力情况下,消息的可靠性和时延测试使用说明(1)修改../test/config.go TESTIP和SECRET(2)go build press_open_im.go./press_open_im -sn 10000 -mn 1000 -t 100参数sn 10000表示:启动10000个压测客户端;参数mn 1000表示:每个客户端发送消息数量为1000条;参数t 100表示:每次发送一条消息后,休眠100毫秒;如果是1万客户端,算起来大概是每秒钟发送10万条消息;(3)go build msg_delay_open_im.go./msg_delay_open_im -sn 2 -mn 1000 -t 100参数sn 2 表示:启动2个客户端消息收发检测;参数mn 1000表示:每个客户端发送1000条消息;参数t 100表示:每次发送一条消息,休眠100毫秒;群聊压测程序仓库地址https://github.com/OpenIMSDK/...代码说明create_work_group_open_im.go 创建测试群press_open_im.go 压测消息发送,但发送者不校验是否完成接收到msg_delay_open_im.go 检测消息发送和接收,在大压力情况下,消息的可靠性和时延测试使用说明(1)修改../test/config.go TESTIP和SECRET(2)go build create_work_group_open_im.go./create_work_group_open_im -gmn 10参数gmn表示:创建群成员为10的测试群,实际会创建13个成员。(3)go build press_open_im.go./press_open_im -gid 1510503557 -sn 10 -mn 1000 -t 100参数gid 1510503557 表示:压测群聊groupID参数sn 10表示:压测客户端数量,要小于等于群成员数参数mn 1000表示:每个客户端发送消息数量为1000条;参数t 100表示:每次发送一条消息,休眠100毫秒;(4)go build msg_delay_open_im.go./msg_delay_open_im -gid 1510503557 -mn 100 -t 100参数gid 1510503557 表示:压测群聊groupID参数mn 100表示:每个客户端发送消息数量为100条;参数t 100表示每次发送一条消息,休眠100毫秒;
推荐阅读
- 分布式|OceanBase 4.0发布(首次实现单机分布式一体化架构、全面上云)
- 程序人生|Mall电商实战项目开源,附源码、教程合集
- 用了接口还有必要用抽象类吗()
- 放假不停学|原动力×云原生正发声 降本增效大讲堂
- 云原生系列技术|云原生系列技术(六)(Kubernetes 架构及核心组件详解)
- 技术交流|【云原生】Kubernetes(k8s)的架构与组件介绍
- #|15-Spring架构源码分析-Spring代理与AOP
- Java|想接私活薪资翻倍,根据这几个开源SpringBoot项目改改
- 设计模式|2.5 万字详解(23 种设计模式)