文档章节

t-io 30W长连接并发压力测试报告

openSeLi
 openSeLi
发布于 2017/06/06 13:32
字数 361
阅读 16336
收藏 50

开始前准备。操作系统Ubuntu 12

在/etc/sysctl.conf中添加如下配置:

fs.file-max = 1048576
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

在/etc/security/limits.conf中添加如下配置:

  *	soft nofile 1048576
  *	hard nofile 1048576

最后使用ulimit -an查询设置是否生效。

测试主机cpu:

内存:

客户端测试机用VMware创建12台虚拟机。机器性能就不列举了。每台虚拟机可以跑3W链接

1:t-io启动时内存占用率以及链接情况

2:5W链接时内存占用情况

3:10W

4:20W

5:30W

----------------------------------------------------------------------------

java进程统计情况

cpu

jvm

2小时后观察内存变化情况如下图

结论如下

1:0-10万连接。内存变化较大。主要是由于内存初始化时jvm会占用一部分内存。

2:10万之后。每增加10万连接 内存占用率上升300M左右。

3:随着连接数增加可以发现cpu性能对连接数影响不大。

4:新生代内存与老生代内存占用率比较合理。

5:并发30W连接在2小时内。内存变化不明显。处于合理状态

根据以上数据可以推论 —-> 以8G内存(可使用内存为7.5G左右)为例:当内存占用率达到5G左右时足以支撑100W并发连接。

© 著作权归作者所有

共有 人打赏支持
openSeLi
粉丝 15
博文 1
码字总数 361
作品 0
西安
私信 提问
加载中

评论(20)

北极星愿
北极星愿
用java这种高级语言写这种东西,会比C,C++ 快?可以考虑更底层一些的语言
很拽De土豆
很拽De土豆
请教一下你客户端是12个虚拟机,每个3w连接。服务端是只有1个?也就是有12*3w个客户端连接到了服务端?
JavaGG
JavaGG
这只是链上 去什么都没干吗??
贤狼罗兰斯
贤狼罗兰斯
能做一些echo,json解析之类的任务么,看看框架的任务调度效果怎么样,超会不会出现超时,多少qps的时候服务器会雪崩等等
贤狼罗兰斯
贤狼罗兰斯

引用来自“91devel”的评论

请问博主,你的这个百万连接没有频繁业务交互的吗,这个延时问题有多大有测试结果没?
同问。只是维护链接说明不了太多
Henson哥
Henson哥
请问博主,你的这个百万连接没有频繁业务交互的吗,这个延时问题有多大有测试结果没?
m
myumen
连接上去没收发消息吗?
openSeLi
openSeLi

引用来自“qycms_cn”的评论

"客户端测试机用VMware创建12台虚拟机。机器性能就不列举了。每台虚拟机可以跑3W链接"

这个是通过什么命令,什么软件向服务器发动链接?
自己写客户端。协议是握手就行。去掉服务端的心跳检测。
talent-tan
talent-tan

引用来自“彪付_3个字符”的评论

引用来自“彪付_3个字符”的评论

有没有对指定通道的压力测试?我们自己测试发现在3秒时间内,向指定通道传输数据7K至1W条,发现有时 decode数据会多获取后面的数据,而有时候decode就阻塞了;之前 项目上线忽略了单一通道处理问题,现在在猛改中~~

引用来自“talent-tan”的评论

“decode数据会多获取后面的数据”,,那是你解码算法没有截包,然后后面的就乱了。。。
:joy:好吧,网络编程还真是难,大神要不告诉我,截包做法使用的关键类或方法是哪个吧?我找了好久~~~:pray:

回复@彪付_3个字符 : 根据tio提供的showcase来,你根本不用关心截包的事儿,根据业务解包就可以了。
彪付_3个字符

引用来自“彪付_3个字符”的评论

有没有对指定通道的压力测试?我们自己测试发现在3秒时间内,向指定通道传输数据7K至1W条,发现有时 decode数据会多获取后面的数据,而有时候decode就阻塞了;之前 项目上线忽略了单一通道处理问题,现在在猛改中~~

引用来自“talent-tan”的评论

“decode数据会多获取后面的数据”,,那是你解码算法没有截包,然后后面的就乱了。。。
:joy:好吧,网络编程还真是难,大神要不告诉我,截包做法使用的关键类或方法是哪个吧?我找了好久~~~:pray:
t-io 3.0.0 发布,不止是 30 万 TCP 长连接框架

t-io介绍请见:t-io官网 自问:为什么不是“百万级TCP长连接框架”而是30万了? 自答:t-io目前已经做过的测试中,最多只测到了30万个长连接(见:t-io 30W长连接并发压力测试报告),当测试...

talent-tan
05/24
0
123
【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d914e07b7fc1c26a0cf7c 前言 随着部门业务的拓展,我们有了很多性能测试的机会,但在实战中...

腾讯Bugly
2016/10/24
811
1
ApacheBench压测 那点事儿

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “我总是希望自己不要过于草率地去批评一个人” -《傲慢与偏见》 写代码,到处是指标和数据的。在写完接口,为...

泥沙砖瓦浆木匠
2016/06/30
495
0
node.js调研与服务性能测试

主要关注这几个方面 socket服务性能, socket客户端性能 http服务性能. 服务的稳定性与资源占用 开发成本 考虑到今后的应用场景, 实现了一个简单的memcache代理服务. 内部维护了一个50连接的简...

mj4738
2012/05/20
0
1

没有更多内容

加载失败,请刷新页面

加载更多

浅析微信支付:开通免充值产品功能及如何进行接口升级指引

本文是【浅析微信支付】系列文章的第十五篇,主要讲解如何开通免充值产品功能流程和其中的注意事项,对于接口升级会重要讲解,避免爬坑。 浅析微信支付系列已经更新十五篇了哟~,没有看过的...

YClimb
41分钟前
1
0
看看ArrayDeque源码

之前看了其他实现Deque接口的类,这里再看看ArrayDeque吧,下图可以看到这个类设计的结构层次,其实Deque接口是继承了Queue接口的。用可调整大小的数组实现Deque接口。没有容量限制,他们根据...

woshixin
42分钟前
2
0
如何存储登录cookie,发送一个post类型的api请求?

其实发送post请求和get请求一样,主要就是不知道如何存储登录cookie进行发送请求,请教xx得到如下解决办法 点击右下方的cookies,填写cookies信息,如图 1填写登录的cookie名,2填写cookie的...

七曦777
42分钟前
1
0
利用cefSharp实现网页自动注册登录的需要注册的一些事项

最近朋友有个需要自动注册登录点击的事,我帮着写了写,好久没写过这东西了,在写的过程中总结了需要注意的一些事项。 一、换IP之后要测试一下速度,我目前用的最简单的测试方法就是20-30秒加...

我退而结网
50分钟前
2
0
Go语言中使用 BoltDB数据库

boltdb 是使用Go语言编写的开源的键值对数据库,Github的地址如下: https://github.com/boltdb/bolt boltdb 存储数据时 key 和 value 都要求是字节数据,此处需要使用到 序列化和反序列化。...

Oo若离oO
51分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部