开源IM项目OpenIM单聊及万人群压测报告

单聊压测结论:

华为云主机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内存增加

关于OpenIM

OpenIM是由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/Open-IM-Server

开发者中心:https://doc.rentsoft.cn/#/

单聊压测程序

仓库地址

https://github.com/OpenIMSDK/Open-IM-SDK-Core/tree/v2.3.0release/single_test

代码说明

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/Open-IM-SDK-Core/tree/v2.3.0release/work_group_test

代码说明

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毫秒;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容