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

【原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型 【原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型 1、内容概述 一套完整IM系统中,除开基本的业务设计,消息模型的设计是其中最为关键的一环,它关系到整个IM系统的可靠性、高效性、稳定性,因此需要设计一套合理的消息传递收发机制以承载IM的各种需求,OpenIM结合具体的业务场景,提炼出IM后端的重要接口,并经过反复推敲,验证,设计出了自己的一套通信协议OMTP,协议中每个字段尽量的减少冗余,使其精简高效、最大限度的满足现有的业务需求并能够支持业务的水平拓展,同时为了达到消息的实时可靠与高效, 阅读详情

单聊压测结论:

华为云主机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毫秒;

开源即时通讯(IM)项目OpenIM源码部署流程 由于OpenIM依赖的组件较多,开发者需求不一,导致OpenIM部署一直被人诟病,经过几次迭代优化,包括依赖的组件compose的一键部署,环境变量设置一次,全局生效,以及脚本重构,目前OpenIM部署比较丝滑,特写文章分享给大家。OpenIM是什么OpenIM不是一个独立的聊天产品,它不像telegram、Signal、rocket.chat那样是一个完全独立、可以直接安装使用的聊天应用程序。而是一个开源的即时通讯解决方案,为开发者提供了一系列的工具和服务,以便于他们在自己的应用程序中集成即时通讯功能。 阅读详情

相关推荐

Open-IM源码部署

Open-IM源码部署

qwerty12392的博客 2118

时不我待,拥抱趋势,开源IM项目OpenIM技术简介

同时,它还提供了完整的管理后台,帮助管理员监控和管理用户、群组、消息、通知等内容。OpenIM支持iOS和Android原生开发,并且也提供了Flutter、uniapp、React Native等跨平台开发框架的SDK,开发者可以根据自己的需求选择不同的开发方式。作为一款开源的IM项目,OpenIM提供了丰富的功能和完善的技术支持,吸引了众多开发者的关注和使用。对于iOS和Android原生开发,OpenIM提供了针对各个平台的SDK和相应的开发文档,开发者可以根据文档指引完成相应的集成和开发工作。

OpenIM的博客 6370

OpenIM离线docker部署及应用

介绍OpenIM:由前微信技术专家打造的基于 Go 实现的即时通讯(IM)开源项目,包括IM服务端和客户端SDK。开发者私有化部署,基于SDK二次开发,可以轻松替代第三方IM云服务,打造具备聊天、社交功能的app。无论是开发同城交友、企业办公亦或是当今最热门的元宇宙,还是在应用中集成IM功能,都非常便捷。OpenIM代码100%开源,开源协议Apache-2.0 License任何企业和个人都可以免费使用(包括商用)。请各位看官多多支持,转发和宣传,助力OpenIM成为开源IM的No1。

qiuweifan的博客 3449

windows10部署OpenIM,及踩坑记录

windows10部署运行OpenIM

running17的博客 8193

【项目实战】开源的即时通讯组件OpenIM入门介绍

IM,是即时通讯(Instant Messaging,简称 IM)OpenIM,是一个开源的、强大的即时通讯组件。OpenIM,提供了完整的即时通讯服务功能。OpenIM,被设计为高并发、高可用、易于扩展的架构。OpenIM,适合构建企业级的即时通讯平台。OpenIM,由一群热爱开源技术的开发者创建。OpenIM,旨在提供一个高性能、稳定、易用的即时通讯解决方案。OpenIM,是由IM技术专家打造的开源的即时通讯组件。

奶爸的编程之路,也就一周冷个三天 3484

从仿微信IM实战剖析长连接、消息可靠性与音视频通话链路设计

即时通讯(IM)系统是移动互联网应用的基础设施,其核心在于稳定可靠的长连接和高效的消息分发机制。本文从工程师实战视角出发,围绕IM系统的通信层设计,深入剖析基于Netty自定义TCP协议的长连接方案,对比WebSocket在不同网络环境下的优劣,并讲解消息幂等、离线补拉、未读数与会话列表等关键机制。同时,结合位置服务、机器人回调以及实时音视频通话等高频业务场景,介绍了Redis GEO、WebRTC、STUN/TURN与SFU的工程落地经验。针对弱网、高并发、NAT穿透失败等典型问题,本文提供了一套可复用的

weixin_30768881的博客 317

OpenIM Server开源即时通讯服务器快速上手终极指南

还在为搭建企业级即时通讯系统而烦恼吗?想要拥有像微信一样流畅的聊天体验,但又不想被大厂绑定?OpenIM Server就是你的最佳选择!这个开源项目让你轻松构建属于自己的即时通讯平台,支持千万级用户和百亿级消息处理。😊 ## 从零开始:搭建你的专属聊天系统 想象一下,你只需要几个简单的步骤,就能拥有一个功能完整的即时通讯服务器。OpenIM Server采用Go语言开发,微服务架构设计,让你

gitblog_00350的博客 1086

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(c++)

本文介绍了YOLOv26在RK3588平台的C++推理部署方案。重点包括:1)扩展Ultralytics导出格式,新增RKNN_ONNX专用导出选项;2)重构Detect Head结构,使其更适合RKNN推理;3)提供C++侧后处理实现建议。该方案保留了Ultralytics训练生态,通过优化模型结构输出,将解码等操作移至C++端,充分发挥Rockchip NPU性能。适用于RK3588/RK356x等平台,需配合rknn-toolkit2使用,为YOLOv26的嵌入式部署提供完整解决方案。

qq_64366203的博客 2176

【Github开源精选】 2026 年开源 IM聊天软件 私有化部署选型:Tailchat、Rocket.Chat、Matrix、OpenIM、野火IM 怎么选?

本文对比了五款开源即时通讯(IM)系统的私有化部署方案:Tailchat、Rocket.Chat、Matrix+Element、OpenIM和野火IM。这些方案适用于不同场景,如个人私域、小团队协作、企业内网通讯或二次开发。 Tailchat 适合私域和小团队,具有现代UI、插件机制和中文友好体验,但企业级成熟度较弱。Rocket.Chat 功能完整、开箱即用,适合直接部署,但需注意商业版本限制。Matrix+Element 强调隐私和开放协议,适合技术团队和安全通讯,但部署较复杂。OpenIM 和野火IM

我是Superman丶的博客 609

AMG8833红外测温实战:在STM32F103上做个简易人体感应与温度报警器

本文详细介绍了如何在STM32F103上使用AMG8833红外测温传感器构建人体感应与温度报警系统。通过硬件连接方案、驱动代码开发、人体检测算法实现及报警系统设计,展示了如何利用8x8红外温度矩阵实现智能监测功能。文章包含实用的初始化流程、温度数据读取优化和低功耗策略,为创客项目提供完整解决方案。

weixin_33725239的博客 393

用51单片机和LD3320语音模块DIY一个会说话的温度报警器(附完整代码)

本文详细介绍了如何使用51单片机和LD3320语音模块DIY一个智能温度报警器,包括硬件选型、电路设计、软件开发及核心功能实现。通过DS18B20温度传感器和语音模块的结合,实现温度超标时的语音报警功能,适合智能家居系统等应用场景。附完整代码,方便开发者快速复现。

weixin_42525632的博客 419

紧跟潮流,抓住趋势,跟上全民AI的节奏,开源IM项目OpenIM产品介绍,为AIGC贡献力量

高度自主、安全可控、开放自由,私有化部署,一切皆可控透明度和可信度:开源软件的源代码是公开的,任何人都可以查看和检查代码,从而增强了软件的透明度和可信度。用户可以了解软件的内部结构和运作方式,发现和修复潜在的安全漏洞和错误。自由度和可定制性:开源软件允许用户自由地使用、复制、分发和修改软件代码。用户可以根据自己的需求和要求对软件进行自定义和定制,满足不同的业务需求。开放创新和协作:开源软件的源代码公开,鼓励开发者和用户之间的交流、合作和创新。

OpenIM的博客 2184

【MMDetection3.0实战】从零构建自定义数据集训练流程

本文详细介绍了使用MMDetection3.0框架从零开始构建自定义目标检测数据集的完整训练流程。内容涵盖环境配置、COCO格式数据准备、核心代码改造、模型配置与训练策略调优,以及最终的模型测试与验证,帮助开发者快速上手并训练自己的检测模型。

l6m7n8的博客 313

# 靠谱:开源IM项目OpenIM压测程序介绍-自己动手压测性能和稳定性

# 靠谱:开源IM项目OpenIM压测程序介绍-自己动手压测性能和稳定性

OpenIM的博客 2466

告别抓包失败!保姆级配置:让Burp+Proxifier稳定抓取任意微信小程序

本文提供了一套完整的Burp+Proxifier配置方案,确保稳定抓取微信小程序数据。从环境准备、工具选型到Burp Suite深度配置和Proxifier精准设置,详细解决了证书安装、进程捕获和乱码解析等核心问题,帮助开发者告别抓包失败,提升调试效率。

weixin_28738165的博客 454

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

IM开源项目OpenIM部署文档-从准备工作到nginx配置

openim

OpenIM的博客 7735

Python入门实战:Python生物信息学编程基础

本文旨在为生物学背景的研究人员和对生物信息学感兴趣的程序员提供一个全面的Python生物信息学编程入门指南。我们将从Python基础知识开始,逐步深入到生物信息学特定的工具和技术,最终达到能够独立开发生物信息学分析程序的水平。Python编程基础生物信息学常用数据结构和算法DNA和蛋白质序列分析基因组数据处理生物信息学数据可视化Biopython库的使用实际项目案例背景介绍:概述文章目的、范围和预期读者核心概念与联系:介绍Python和生物信息学的基本概念。

AI架构师小马 1510

openIM本地搭建遇到的问题

官方文档里有快速部署和源码部署,快速部署就是使用docker-compose一键部署,当然这个需要了解一些这方面的知识,源码部署就需要自己手动安装需要的组件,kafka,mysql,MongoDB,etcd,redis。在日志里一直在报这个错误,可以看出来是kafka的问题,我没有用过kafka,所以不是很熟悉,第一时间肯定想到去百度,相关的博客有很多,跟着弄了,但是都不能解决,最后还是在官方的技术交流群里一位大佬的提示下,想到了单独启动kafka看看有什么报错信息。

Liuxw666666的博客 2563

RT-DETR改进前必看 - Ultralytics调参 1:1还原RT-DETR官方版本实验环境,更方便改进

的项目文件中集成了YOLOv3v5v6v8v9v10rt-detr11以及其中不同大小的模型结构,更方便我们学习和使用。的参数配置在路径下,其中中设置了模型在训练Train验证Val/Test预测Predict可视化Visualize导出Export超参数Hyperparameters、以及跟踪Tracker的相关参数。在调参过程中主要涉及训练Train和超参数Hyperparameters。下面主要介绍一下初始超参数Hyperparameters。

Limiiiing的博客 7959

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

稳扎稳打 部署丝滑 开源即时通讯(IM)项目OpenIM源码部署流程(linux windows mac)

背景OpenIM包含多个关键组件,每个都是系统功能必不可少的一部分。具体来说,MongoDB 用于持久化存储;Redis 用作缓存;Kafka 用于消息队列;Zookeeper 用于服务发现;Minio 用于对象存储。这些组件的众多可能会增加部署的复杂性。此外,系统包含多个微服务模块,这要求有效管理进程的启动、停止和监控。为了简化这一过程,我们放弃了传统脚本,转而采用了 mage 这一跨平台方案,兼容所有主流平台和 CPU 架构。本文将详细介绍整个源码部署过程。OpenIM整体架构。

OpenIM的博客 3555

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

轻量级开源即时通讯项目:Open Im Server

轻松搭建,随心沟通,让距离更近一步!

2401_83063795的博客 2586

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

「IM开源推荐」前微信技术专家打造,golang实现,一键部署,客户端SDK全平台支持,轻松替代IM云服务

背景 OpenIM成立之初就将“开源”作为核心战略来推进,开源充分体现了自由、平等、分享的互联网精神。 全球范围频繁发生的数据泄露、勒索病毒、隐私滥用等安全事件一次次给企业敲响警钟,企业管理者对数据资产的价值、数据安全的重要性有了更清晰的认识,数据安全成就企业核心价值。 IM作为核心业务数据,安全的重要性毋庸置疑,OpenIM开源以及私有化部署让企业能更放心使用。 如今IM云服务商收费高企,如何让企业低成本、安全、可靠接入IM服务,是OpenIM的历史使命,也是我们前进的方向。 优势 OpenIM:由前微信

OpenIM的博客 2450

开源IM项目OpenIM部署流程(附Java封装类)

全称一般叫,是一个开源的即时通讯(IM)整体解决方案。

weixin_46739493的博客 2371

收藏-即时通讯(IM)开源项目OpenIM-功能手册

收藏-即时通讯(IM)开源项目OpenIM-功能手册

OpenIM的博客 7472

开启您的即时通讯未来:深入了解OpenIM

开启您的即时通讯未来:深入了解OpenIM open-im-serverIM Chat 项目地址:https://gitcode.com/gh_mirrors/op/open-im-server 在数字交流的时代背景下,即时消息服务成为连接全球社区的桥梁。而在这片广袤的技术蓝海中,OpenIM作为一款专为开发者打造的即时通讯解决方案,正以它卓越的功能和开放的态度,引领着新一代应用开发的趋势。 项...

gitblog_00787的博客 1478
上一篇: # 靠谱:开源IM项目OpenIM压测程序介绍-自己动手压测性能和稳定性
下一篇: OpenIM集群(非k8s)部署文档
OpenIM
博客等级 码龄5年 295粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值