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

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

压测前准备

(一)服务端配置调整 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
​

注意事项

(1)由于需要本地处理sqlite读写,检测程序建议设置2个客户端,发送消息休眠100毫秒;
(2)注意压测客户端和服务端的网络带宽;
(3)如果客户端和服务端同一台机器,注意压测程序cpu占用;

单聊压测程序

仓库地址 
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毫秒;

压测程序使用示例

./press_open_im -sn 100 -mn 100000 -t 100
出现[send msg begin ] 表示初始化完成,开始发送消息
此时再启动可靠性及消息时延测试:
./msg_delay_open_im -sn 2 -mn 1000 -t 100

服务端统计日志查看

tail -f OpenIM.log.all.2022-08-30  |grep "msg_gateway sendMsgCount"
system stat  msg_gateway 60 second recv to msg_gateway sendMsgCount 45267  
表示一分钟收到45267条

消息时延检测查看

minCostTime:  729 ms, maxCostTime:  6332 ms, average cost time:  3295 ms 发送2000条数据 从发送到对方收到,平均时延是3.2秒
CheckReliabilityResult ok, exit 表示发出去的所有消息,对方都能精确收到

群聊压测程序

仓库地址 
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毫秒;
​

压测程序使用示例

./create_work_group_open_im -gmn 10
出现[[CREATE GROUP  {"errCode":0,"errMsg":"","data":{"creatorUserID":"openIM123456","groupID":"3144245614","groupName":"Group Chat","groupType":2,"memberCount":13,"ownerUserID":"openIM123456"}} ] 表示创建群聊成功,记录groupID 3144245614
​
启动压测程序:
./press_open_im -gid 3144245614 -sn 10 -mn 1000 -t 100 
此时再启动可靠性及消息时延测试:
./msg_delay_open_im -gid 3144245614 -mn 100 -t 100

服务端统计日志查看

tail -f OpenIM.log.all.2022-08-30  |grep "msg_gateway sendMsgCount"
system stat  msg_gateway 60 second recv to msg_gateway sendMsgCount 45267  
表示一分钟收到45267条

消息时延检测查看

minCostTime:  594 ms, maxCostTime:  5181 ms, average cost time:  2930 ms  发送2000条数据 从发送群聊到对方收到,平均时延是3.2秒
CheckReliabilityResult ok, exit   表示发出去的所有群聊消息,对方都能精确收到。

关于OpenIM

OpenIM是由IM技术专家打造开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时通讯、实时通讯能力快速集成到自身应用中,并确保业务数据的安全性和私密性。github社区活跃,star近万,排名遥遥领先,开发者万人,OpenM力争开源IM项目No1,打造开源IM第一社区。支持Android、iOS原生开发,支持Flutter、uni-app跨端开发,支持小程序、React等所有主流web前端技术框架, PC支持Electron。重点应用在政务办公,社交,web3场景,一切皆可控,让OpenIM深入到各行业。从开源的内在含义来看,需要这五个维度:透明度;协作;持续发布;精英制度;社区运营,OpenIM在这五方面还需要持续努力,稳固生态建设,巩固OpenIM影响力。

作为开源IM领跑者,OpenIM开源有几个目的:(1)IM核心数据应该掌控在运营者手中(2)IM需求广泛,有很多人免费使用,并能发现问题(3)让更多开发者参与项目项目,特别是IM需求繁多。 在开源社区里面,每个项目都可以开启pr,pr功能将允许每一位开发者对代码进行修改,但是需要项目拥有者的合并代码。集体的力量是最大的,充分体现开源的价值。

github地址:https://github.com/OpenIMSDK/Open-IM-Server

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

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

相关推荐

OpenIM Server v3.8.3-patch.16:高并发IM系统性能与稳定性深度优化实践

在构建高并发、高可用的即时通讯(IM)系统时,性能瓶颈与稳定性挑战是开发者必须面对的核心问题。其原理通常涉及消息分发、在线状态管理、数据存储与缓存等关键链路的技术选型与架构设计。通过异步非阻塞、多级缓存、防御性编程等工程实践,可以有效提升系统的吞吐量、降低延迟并保障服务长期稳定运行,这对于社交平台、企业协作等应用场景至关重要。本文聚焦于OpenIM Server的最新补丁版本,深入解析其如何针对消息队列、Goroutine泄漏等热词进行精准优化,并通过配置数据库连接池、引入本地缓存等具体手段,为IM系统的性

weixin_33827590的博客 415

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

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

OpenIM的博客 6371

MobileIMSDK与RainbowChat:高并发IM系统产品级解决方案深度解析

即时通讯(IM)系统作为现代应用的核心组件,其底层架构设计直接决定了消息传输的可靠性和实时性。基于TCP、UDP、WebSocket等多协议统一抽象层,MobileIMSDK通过轻量级框架实现了跨平台通信的一致性,有效降低了Android、iOS、H5等多端维护成本。在工程实践中,异步化处理、无锁队列等技术显著提升了高并发场景下的吞吐量,而RainbowChat则在此基础上完成了产品化封装,解决了设备兼容性、UI适配、业务逻辑完整性等真实运营痛点。从v11.7到v12.1的迭代中,离线消息存储优化、会话合并

weixin_30294295的博客 515

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

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

OpenIM的博客 2184

别再为IM发愁了!手把手教你用Docker Compose一键部署OpenIM开源聊天系统(附避坑指南)

本文详细介绍了如何使用Docker Compose一键部署OpenIM开源即时通讯系统,包括环境准备、源码获取、配置解析和实战部署步骤。通过清晰的避坑指南和优化建议,帮助开发者快速搭建稳定高效的聊天系统,适用于社交平台、企业协作等多种场景。

weixin_28736355的博客 189

OpenIM私有化部署实战:Docker离线环境搭建与优化

本文详细介绍了OpenIM私有化部署在Docker离线环境中的实战经验,包括离线镜像准备、Docker Compose配置优化、部署验证及性能调优技巧。针对无网络环境下的特殊需求,提供了从硬件准备到安全加固的完整解决方案,帮助开发者在隔离网络中高效搭建稳定的即时通讯系统。

weixin_30379531的博客 170

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

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

gitblog_00350的博客 1086

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

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

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

企业级IM系统:OpenIM Server私有部署解决方案

在数字化转型加速的今天,企业对即时通讯工具的需求已从简单的消息传递升级为包含数据安全、系统集成和业务定制的综合通信平台。你是否遇到过第三方通讯工具数据隐私无法保障的问题?是否因商业IM软件功能固化而无法满足特定业务场景?OpenIM Server作为开源企业级即时通讯系统,通过**微服务架构**(通过独立部署的服务模块实现弹性扩展)提供了完整的私有部署解决方案,让企业拥有完全可控的通讯基础设施。

gitblog_00768的博客 753

DeepSpeed Zero3 Offload实战:从GCC版本检查到环境配置的完整避坑指南

本文是一份针对DeepSpeed Zero3 Offload部署的完整避坑指南。针对训练中常见的`AttributeError: ‘DeepSpeedCPUAdam‘ object has no attribute ‘ds_opt_adam`报错,文章深入剖析了其根源在于GCC编译器版本过低。指南提供了从系统GCC版本深度探查、安全启用高版本GCC环境,到DeepSpeed一致性安装验证的全链路实战方案,旨在帮助用户构建稳定的大模型训练环境。

weixin_29070721的博客 473

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5380

从0到1部署OpenIM Server:Kubernetes环境下的容器化实践指南

你是否还在为即时通讯(IM)系统的部署繁琐、扩展性差而烦恼?本文将带你通过Kubernetes实现OpenIM Server的容器化部署,从基础配置到性能优化,让你的IM服务具备企业级稳定性与弹性伸缩能力。读完本文,你将掌握: - 使用Kubernetes资源清单快速部署OpenIM集群 - 配置高可用的数据库与消息队列服务 - 实现服务暴露与流量控制的最佳实践 - 针对IM场景的性能调优技巧 ...

gitblog_00430的博客 466

基于java实现的弹幕视频网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示弹幕视频网站,在弹幕视频网站可以查看首页、视频信息、商品信息、论坛信息、我的、跳转到后台、购物车、客服等内容前台首页界面图登录,通过登录填写账号、密码等信息进行登录操作登录界面图视频信息界面图。

DC5621的博客 1333

OpenIM Server边缘节点部署:CDN加速消息传输

在即时通讯(Instant Messaging, IM)系统中,消息传输的延迟和稳定性直接影响用户体验。随着用户规模扩大和跨地域分布,传统中心化部署架构面临三大挑战: - **高延迟**:远距离用户访问中心服务器导致消息往返时间(RTT)过长 - **带宽瓶颈**:中心节点带宽压力大,高峰期易出现消息拥塞 - **单点故障风险**:核心服务集群故障影响全局用户 OpenIM Server作为开源...

gitblog_00108的博客 1082

具有I2S输出的多模数字麦克风ICS-43434咪头LR引脚接地或电源WS接LRCLK

ICS-43434 是一款数字 IS 输出底部收音孔麦克风。完整的 ICS-43434 解决方案包括 MEMS 传感器、信号调理、模数转换器、抽取和抗混叠滤波器、电源管理以及行业标准的 24 位 12S 接口。12S 接口允许 ICS-43434 直接连接到数字处理器,例如 DSP 和微控制器,而无需系统中的音频编解码器。

易板 5662

海康威视iVMS-4200在银河麒麟系统部署全攻略与疑难排解

在信创国产化进程中,软件兼容性是关键挑战之一。以安防监控领域广泛使用的海康威视iVMS-4200客户端为例,其从Windows环境迁移到银河麒麟等国产操作系统时,面临架构适配、依赖库匹配等核心兼容性问题。这涉及到跨平台软件部署的通用原理:不同CPU架构(如ARM的飞腾、x86的兆芯)和操作系统底层API的差异,要求软件必须进行针对性编译和优化。解决这类问题的技术价值在于保障专业软件在国产化环境中的稳定运行,是信创产业落地的重要环节。具体到应用场景,如在基于银河麒麟V10的安防监控项目中,通过获取对应架构的.

weixin_33423874的博客 1423

OpenIM Server网络优化:TCP配置与连接复用全指南

即时通讯(Instant Messaging,IM)系统对网络延迟和连接稳定性有着极高的要求。用户期望消息实时送达,而TCP作为IM系统的基础传输协议,其配置优化直接影响着消息传输的实时性、可靠性和服务器资源利用率。 OpenIM Server作为一款高性能开源IM服务器,在处理海量并发连接时,TCP配置和连接复用策略显得尤为关键。本文将深入剖析OpenIM Server的TCP优化实践,提供从...

gitblog_00808的博客 473

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

深度解析OpenIM企业级开源即时通讯系统架构设计与性能优化

在数字化协作时代,企业级即时通讯系统面临高并发连接管理、消息实时同步、数据一致性保障等核心挑战。OpenIM作为一款开源即时通讯解决方案,通过微服务架构和分布式设计,为开发者提供了可扩展、高性能的即时通讯基础设施。本文将深入剖析OpenIM的技术架构、核心实现原理以及生产环境的最佳实践。 ## 技术挑战与解决方案概述 现代即时通讯系统需要解决的核心技术问题包括:大规模用户连接管理、消息实时传递

gitblog_00012的博客 277

常用元器件使用方法13:物理层接口芯片DP83848的使用方法

介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...

snmplink的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OpenIM 可观测性实战指南:Prometheus + Grafana 监控部署与 AlertManager 邮件告警配置

本篇技术指南以 OpenIM 官方监控文档([docs/contrib/prometheus-grafana.md](https://link.gitcode.com/i/100a8642cdce1b0efd21df419c55cfc5))为核心骨架,结合本仓库的 Prometheus 配置、告警规则、服务发现源码与 Docker Compose 编排,系统讲解 OpenIM 即时通讯服务的监控体

gitblog_01011的博客 468

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OpenIM Server监控与告警终极指南:Prometheus+Grafana实战配置

OpenIM Server作为开源即时通讯解决方案,在生产环境中需要完善的监控和告警系统来确保服务稳定性。本文将详细介绍如何使用Prometheus和Grafana搭建OpenIM Server的完整监控体系,涵盖从基础配置到高级告警的全流程。🚀 ## 为什么需要监控OpenIM Server? OpenIM Server作为实时通讯平台,需要监控关键指标如用户在线状态、消息吞吐量、API响

gitblog_00609的博客 407

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OpenIM Server版本升级指南:平滑过渡到新版本

在当今快速发展的即时通讯(Instant Messaging, IM)领域,系统的稳定性、安全性和功能迭代直接影响用户体验和业务连续性。OpenIM Server作为一款开源的即时通讯服务器解决方案,通过持续的版本更新不断优化性能、修复漏洞并引入新特性。然而,版本升级过程中若操作不当,可能导致服务中断、数据丢失或功能异常。本指南将系统阐述OpenIM Server的升级流程,帮助运维人员和开发者实...

gitblog_00938的博客 600

如何构建企业级即时通讯系统:开源方案的技术选型与实践指南

在数字化转型加速的今天,企业对即时通讯系统的需求不再局限于简单的消息传递,而是需要一个能够深度集成业务流程、保障数据安全、支持高并发的通信平台。OpenIM Server作为一款企业级开源即时通讯系统,通过微服务架构设计和灵活的组件化方案,为企业提供了自主可控的通信基础设施。本文将从技术选型、架构设计、实践部署到扩展集成,全面解析如何基于OpenIM构建符合企业需求的即时通讯解决方案。 ## 技

gitblog_00474的博客 1032

OpenIM Server v3.8 版本演进深度解析:多端登录、流式消息与高可用架构新特性

本篇技术指南以 OpenIM Server 官方 [CHANGELOG-3.8.md](https://link.gitcode.com/i/af744ef12f058763f62c8ca6a415bd30) 为骨架,系统梳理 v3.8.3-patch.7 至 v3.8.3-patch.16 期间的核心新特性、关键修复与架构演进,并结合当前仓库源码与配置文件逐项佐证。读完本文,你将掌握 OpenI

gitblog_00751的博客 497
上一篇: 收藏-即时通讯(IM)开源项目OpenIM-功能手册
下一篇: 开源IM项目OpenIM单聊及万人群压测报告
OpenIM
博客等级 码龄5年 295粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值