[原]zeromq框架测试报告
一、环境:
服务器:linux 4核 16G 虚拟机 1台
客户端:linux 4核 16G 2000台(模拟)
数据包大小:1036字节
二、参数设置:
ulimit -n 65536
服务端处理线程2,端口4440
客户端数据包大小:约1k
三、应答模式测试
3.1 测试
模拟2000客户端并发访问,每个客户端与服务端交互10次总共花费的时间,单位是毫秒
3.2 结果
平均:24149.5ms
每条线程平均耗时:12.07475ms
单个任务平均:1.207475ms
|
客户端数量[个] |
单个客户端的QPS[每秒钟应答客户端能力] |
|
10 |
2458次 |
|
50 |
1578次 |
|
100 |
1133次 |
|
1000 |
160次 |
服务端的分4次统计内存与CPU使用情况
第一次:物理内存:220m,CPU:90%~120%
第二次:物理内存:282m,CPU:90%~120%
第三次:物理内存:284m,CPU:90%~120%
第四次:物理内存:273m,CPU:90%~120%
四、推送模式测试
4.1 测试
服务端由2条线程处理2000订阅
针对服务端的每一个订阅启动10个客户端,一共是20000个客户端
模拟出20000个订阅的场景
4.2 结果
|
客户端数量[个] |
单个客户端的平均推送延迟 |
|
2W |
14ms |
|
1W |
5ms |
|
物理内存 |
CPU |
|
|
2W客户端推送中 |
5.2G |
210%~250% |
|
断掉全部客户端 |
3.4G |
198%~210% |
注:在重新打开2W客户端后,内存会瞬间降到2.6G左右,然后稳步提高,大约5分钟左右服务端稳定在5.2G左右,根据PUB/SUB原理来分析,这个时候应该是输出队列占用的物理内存,另外新版本的PUB/SUB模式,在SUB处理慢的情况下,会阻塞在SUB端,这样对PUB不造成影响。
五、问题
1)【已解决】2000个线程时,socket创建异常:通过zmq_ctx_set增加ctx的socket上线
2)【已解决】并发效率不稳定:通过zmq_setsockopt,结合服务器的内存和CPU,适当调整ZMQ_BACKLOG、ZMQ_SNDHWM ZMQ_RCVHWM参数,本次测试均为1000
3)【已解决】随着并发数提高,频繁请求服务器造成的客户端不稳定:并发访问在2W个连接,由于单机端口数量限制造成连续请求的socket不足,会造成模拟客户端为了等待系统分配socket端口造成的假死现象,通过netstat查证与服务器无关
4)【临时替代方案解决】使用zmq_recvmsg的API时会产生严重的内存泄露,目前采用zmq_recv代替方案。注:这两个API一个是针对zmq_msg结构体的传输,一个是针对buffer的传输,原本以为用zmq_msg会好一些,结果压测时造成大量内存的泄露,这个api内存泄露问题据说在3.1.X中修复过,目前我用的3.2.4版本居然仍然存在。
[原]zeromq框架测试报告的更多相关文章
- J.U.C体系进阶(三)- juc-atomic 原子类框架
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-atomic 原子类框架 AtomicInteger AtomicInt ...
- [原]ZolltyMVC框架简介
ZolltyMVC框架是一款轻量级的Java应用编程框架(Java Application Framework),融合了常用的IOC/DI.MVC(注解.XML配置式.RESTful风格.模型驱动.视 ...
- HttpRunnerManager接口自动化测试框架测试报告页面优化
在测试报告生成结果页面,点击左上角的图标不能快速返回到首页.在大神的指点下,要改一个跳转链接,如下图: 修改路径如下: 修改的字段:把<a href="#!" class=& ...
- python - 自动化测试框架 - 测试报告
testSuitr.py: # -*- coding:utf-8 -*- '''@project: Voctest@author: Jimmy@file: testSuite.py@ide: PyCh ...
- Java原子类--框架
根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIn ...
- 从零开始编写自己的C#框架(26)——小结
一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...
- RabbitMQ、ActiveMQ和ZeroMQ
消息中间件的技术选型心得-RabbitMQ.ActiveMQ和ZeroMQ 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs RabbitMQ.Active ...
- 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
消息中间件的技术选型心得-RabbitMQ.ActiveMQ和ZeroMQ 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs RabbitMQ.Active ...
- 更快、更强——解析Hadoop新一代MapReduce框架Yarn(CSDN)
摘要:本文介绍了Hadoop 自0.23.0版本后新的MapReduce框架(Yarn)原理.优势.运作机制和配置方法等:着重介绍新的Yarn框架相对于原框架的差异及改进. 编者按:对于业界的大数据存 ...
随机推荐
- 开机自动mount
root权限编辑:/etc/fstab vim /etc/fstab #当前系统里的唯一标志 挂载到什么地方 文件系统类型 选项 是否dump # <fi ...
- shell脚本 入门 —— 符号篇
shell Shell就是一个命令行解释器,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive). Shell还有一种执行命令的方式称 ...
- 20162324 2016-2017-2《Java程序设计》课程总结
20162324 2016-2017-2<Java程序设计>课程总结 一.每周作业链接汇总 预备作业01 有关老师与学生关系的几个问题: 预备作业02 做中学: 预备作业03 实验楼学习: ...
- TensorFlow实现CNN
TensorFlow是目前深度学习最流行的框架,很有学习的必要,下面我们就来实际动手,使用TensorFlow搭建一个简单的CNN,来对经典的mnist数据集进行数字识别. 如果对CNN还不是很熟悉的 ...
- CodeIgniter 资料
PHP 论坛: http://codeigniter.org.cn/forums/forum-opensource-1.html 下载 CodeIgniter 项目 的最新软件包(http://www ...
- notepad++使用正则表达式的查找替换
使用正则表达式可以很好地完成很多繁琐耗时的工作,以下抄录editplus正则表达式的使用,同样适用于notepad++:表达式 说明\t 制表符.\n 新行.. 匹配任意字符.| 匹配表达式左边和右边 ...
- CNNIC成为首家UASG中国联络站
1月29日,在“2018中国域名大会暨中国互联网络信息中心(CNNIC)行业合作伙伴年会”上获悉,CNNIC日前正式完成与互联网名称与数字地址分配机构(ICANN)的签约,成为首家UASG(普遍接受指 ...
- eclipse中使用adb连接小米2调试程序的问题.
http://jingyan.baidu.com/article/8065f87fcbec19233124983e.html eclipse连接小米2调试程序的问题. | 浏览:5494 | 更新:2 ...
- PHPAdmin的安装和配置
phpadmin是用于管理mysql数据库的一个产品,,毕竟很多数据库服务器不能够公开连接,所以只能够使用http的方式来进行连接管理. 下载phpadmin( http://xj-http. ...
- Ubuntu chrome FQ
按照文档FQ,需要注意一下两点: 1. 在安装Chrome 下的 SwitchyOmega 插件时,拖入到浏览器不能识别,应该打开chrome://extensions/再拖入: 2.在设置时排列列表 ...