网络库性能测试
来源:互联网 发布:c语言项目开发流程 编辑:程序博客网 时间:2024/06/06 08:54
一、背景:公司,基于libuv封装了一个网络库。对该网络库进行了性能测试。
二、测试说明:
暂时,进行了echo程序测试,但是要求对数据包分成一个个消息(这样,如果一个包很长,那么需要先缓冲,等有足够的数据,才可以回复。这样相对符合现实).
另外,测试的client/server需要在不同的机器。
三、测试方案:
1、1024个链接同时发包,每一个包长度为512字节。
结果:该测试比较正常,稳定,没发现什么问题。
2、1024个链接同时发包。每一个链接发的包是不一样大的。发包大小种类有:{32,128,512,1*1024,4*1024,16*1024,64*1024,256*1024,1*1024*1024};
结果: 1、可能会存在链接无法及时断开的情况,甚至是无法断开的情况(即、客户端已经退出,但是,server端查看链接仍然存在).
2、内存会比较大。在测试512字节,相同大小的包,内存占用不到5M。但是,这里测试,内存近2G。
3、在客户端退出一段时间之后,server会将内存还给系统。如果连接断全部断开,那么几乎全部还给系统(占用不到5M);如果连接没有全部断开(剩余4~5个链接没断开),那么会占用大约11M。
四、其它
在这个测试过程中,也尝试使用了其它内存分配器(jemalloc,tcmalloc)
1、用这些内存分配器,并没有想象中的性能提高;
2、内存似乎不能及时的返回给系统。
[当然,可能我的用法存在问题]
五、心得
1、内存相关
1-1、在网络性能测试中,动态申请内存(最好不要用new,用malloc等直接申请)
1-2、在动态申请内存外面加一层包裹函数。
这样的好处,是可以在测试的时候,可以保证统一入口。这样的话,在必要的时候,可以进行必要的统计。很容易就知道内存是否全部释放。
2、网络相关
2-1、网络程序,在网络I/O将占用很大的CPU比例;所以,发送缓冲还是有必要存在的。
2-2、网络程序,心跳包很有必要。网络程序会存在断链不完全的情况。心跳包可以解决这个问题。
二、测试说明:
暂时,进行了echo程序测试,但是要求对数据包分成一个个消息(这样,如果一个包很长,那么需要先缓冲,等有足够的数据,才可以回复。这样相对符合现实).
另外,测试的client/server需要在不同的机器。
三、测试方案:
1、1024个链接同时发包,每一个包长度为512字节。
结果:该测试比较正常,稳定,没发现什么问题。
2、1024个链接同时发包。每一个链接发的包是不一样大的。发包大小种类有:{32,128,512,1*1024,4*1024,16*1024,64*1024,256*1024,1*1024*1024};
结果: 1、可能会存在链接无法及时断开的情况,甚至是无法断开的情况(即、客户端已经退出,但是,server端查看链接仍然存在).
2、内存会比较大。在测试512字节,相同大小的包,内存占用不到5M。但是,这里测试,内存近2G。
3、在客户端退出一段时间之后,server会将内存还给系统。如果连接断全部断开,那么几乎全部还给系统(占用不到5M);如果连接没有全部断开(剩余4~5个链接没断开),那么会占用大约11M。
四、其它
在这个测试过程中,也尝试使用了其它内存分配器(jemalloc,tcmalloc)
1、用这些内存分配器,并没有想象中的性能提高;
2、内存似乎不能及时的返回给系统。
[当然,可能我的用法存在问题]
五、心得
1、内存相关
1-1、在网络性能测试中,动态申请内存(最好不要用new,用malloc等直接申请)
1-2、在动态申请内存外面加一层包裹函数。
这样的好处,是可以在测试的时候,可以保证统一入口。这样的话,在必要的时候,可以进行必要的统计。很容易就知道内存是否全部释放。
2、网络相关
2-1、网络程序,在网络I/O将占用很大的CPU比例;所以,发送缓冲还是有必要存在的。
2-2、网络程序,心跳包很有必要。网络程序会存在断链不完全的情况。心跳包可以解决这个问题。
0 0
- 网络库性能测试
- 网络性能测试
- iperf网络性能测试
- iperf 测试网络性能
- 初探网络性能测试
- 网络性能测试iperf
- iperf测试网络性能
- iperf网络性能测试
- 网络性能测试
- 初探网络性能测试
- SylixOS网络性能测试
- 网络性能测试-perf
- iperf测试网络性能
- 网络性能测试
- NetPerf与网络性能测试
- 网络性能测试工具-备忘
- 网络性能测试工具--iperf
- 网络性能测试和标准
- 【一天一道LeetCode】#25. Reverse Nodes in k-Group
- 8项目3
- Xml学习笔记(一):xml语法格式
- echarts2.2.7入门
- CSS实现垂直居中的5种方法
- 网络库性能测试
- 学习注意点总结:持续更新~
- hadoop学习序曲之java基础篇--java面向对象 封装
- 第一章 从开机加电到执行main函数之前的过程
- hadoop学习序曲之java基础篇--java继承 抽象类
- 内部排序算法的稳定性
- 图片缓存ImageLoader的使用
- 记录自学之路
- Maven项目同时使用lib下的Jar包