关于架构:开源IM项目OpenIM单聊及万人群压测报告

4次阅读

共计 3369 个字符,预计需要花费 9 分钟才能阅读完成。

单聊压测论断:华为云主机 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: 100    dbMaxIdleConns: 10    dbMaxLifeTime: 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 内存减少

启动万人群聊压测(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 毫秒;

正文完
 0