100万连接测试资料整理

设置相关脚本:

默认:

$cat /proc/sys/net/ipv4/ip_local_port_range

32768    61000

$cat setting.sh

#/bin/bash

# modify backlog, meanwhile change listen function to 1024, default 128
# echo “1024" > /proc/sys/net/core/somaxconn

sysctl -w net.core.somaxconn = 1024

# more ports for testing
sysctl -w net.ipv4.ip_local_port_range="1025 65535"  // 1025 - 6535, about 50000 port avaiable

# tcp read buffer, min, default, maximum
sysctl -w net.ipv4.tcp_rmem="2048 2048 16777216"      // adjust read buffer -> 2k

# tcp write buffer, min, default, maximum
sysctl -w net.ipv4.tcp_wmem="2048 2048 16777216"      // djust write buffer -> 2k, so every socket take about 4k bytes, tested 3.75k.

# tcp  buffer, min, default, maximum, uint = page,page = 4096 byte, we can change the value based on mem
sysctl -w net.ipv4.tcp_mem="1250000 1500000 1750000"  // min 5G, default 6G max 7G, 7G/4K about 175w connections

# tcp
sysctl -w net.ipv4.tcp_max_orphans="200000"          // as large as possible, consider physical mem.

echo 9999999 | tee /proc/sys/fs/nr_open
echo 9999999 | tee /proc/sys/fs/file-max

ulimit -n 9999999

#ulimit -HSn 9999999, setting soft link and hard link

# edit /etc/security/limits.conf, add line, for all user

#* - nofile 9999999

这样修改的结果是临时有效,如果系统重启将失效,如果永久生效:

echo “net.core.somaxconn = 1024" >> /etc/sysctl.conf

echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 2048 4096 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 2048 4096 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_mem = 1250000 1500000 1750000" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_orphans=200000" >> /etc/sysctl.conf

echo "fs.nr_open  = 9999999" >> /etc/sysctl.conf
echo "fs.file-max = 9999999" >> /etc/sysctl.conf

echo "* - nofile 9999999" >> /etc/security/limits.conf

测试方式:

A 服务端   8G 内存, 服务端启动端口  5050  地址:192.168.1.2

B client  8G 内存, 客户端启动,设置20个ip 地址别名  192.168.1.100 - 192.168.1.120, 批量设置: for i in `seq 100 120`; do sudo ifconfig eth0:$i 192.168.1.$i up ; done

客户端发送每个ip地址绑定发送 50000, 共 20个 20 * 50000 = 100万

发送命令:

1.  ./epoll_cli -s 192.168.1.2 -p 5050 -m -t 192.168.1.99  -n 10 -c 50000   // 绑定 100 - 110,建立50w连接

2.  ./epoll_cli -s 192.168.1.2 -p 5050 -m -t 192.168.1.109 -n 10 -c 50000  // 绑定 110 - 120,建立50w连接

C 使用ACE中的性能测试工具对,多连接情况下进行测试

$ACE_ROOT/performance-tests/TCP/tcp_test -c localhost -i 500000 -b 64 -p 5050

代码下载:

https://github.com/DavadDi/blogs/blob/master/epoll_server.tgz

https://github.com/DavadDi/blogs/blob/master/epoll_cli.tgz

测试代码使用了log4plush作为日志,如果不使用可以通过删除my_logger拿掉,makefile也需要自己修改一下包含路径,仅供参考。

注意:

1 .测试的同时使用dmesg查看系统内核错误

2.  通过 /proc/net/sockstat 查看总体情况,最好不要使用netstat

$cat /proc/net/sockstat

sockets: used 1000305

TCP: inuse 1000013 orphan 0 tw 0 alloc 1000017 mem 6

UDP: inuse 5 mem 0

UDPLITE: inuse 0

RAW: inuse 0

FRAG: inuse 0 memory 0

170万连接图: 最后一个窗口为 tail -f /var/log/message,空白表示无错误发生

相关资料介绍和总结:

详细介绍测试相关资料:

1. 100万并发连接服务器笔记之准备篇

http://www.blogjava.net/yongboy/archive/2013/04/09/397559.html

2. 100万并发连接服务器笔记之处理端口数量受限问题

http://www.blogjava.net/yongboy/archive/2013/04/09/397594.html

3.100万并发连接服务器笔记之测试端就绪

http://www.blogjava.net/yongboy/archive/2013/04/10/397631.html

4. 100万并发连接服务器笔记之1M并发连接目标达成

http://www.blogjava.net/yongboy/archive/2013/04/11/397677.html

Netty 1M相关  http://www.blogjava.net/yongboy/archive/2013/05/13/399203.html

Erlang 1M相关 http://www.blogjava.net/yongboy/archive/2013/04/28/398558.html

5. How far epoll can push concurrent socket connection

http://shenfeng.me/how-far-epoll-can-push-concurrent-socket-connection.html

https://github.com/shenfeng/dictionary  epoll 高性能在线词典项目

Linux kernel tuning for c500k

http://urbanairship.com/blog/2010/09/29/linux-kernel-tuning-for-c500k

A Million-user Comet Application with Mochiweb, Part 3

http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-3

iComet 相关, 可以参考用来做推送服务器 

iComet 是一个使用 C++ 语言开发的支持百万并发连接的 comet/push 服务器, 支持百万级并发连接

https://github.com/ideawu/icomet

构建C1000K的服务器(1) – 基础

http://www.ideawu.net/blog/archives/740.html

构建C1000K的服务器(2) – 实现

http://www.ideawu.net/blog/archives/742.html

TCP长连接的思考和相关问题的实验_百万链接数测试_百万链接内核参数的调整

http://blog.163.com/[email protected]/blog/static/13222965520138128552553/

Troubleshooting the "Out of socket memory" error

http://kaivanov.blogspot.jp/2013/01/troubleshooting-out-of-socket-memory.html

Linux Increase the maximum number of open file

http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/

Linux TCP/IP tuning

http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/

时间: 2024-11-05 17:38:38

100万连接测试资料整理的相关文章

100万并发连接服务器笔记之Java Netty处理1M连接会怎么样

前言 每一种该语言在某些极限情况下的表现一般都不太一样,那么我常用的Java语言,在达到100万个并发连接情况下,会怎么样呢,有些好奇,更有些期盼.  这次使用经常使用的顺手的     netty NIO框架(netty-3.6.5.Final),封装的很好,接口很全面,就像它现在的域名   netty.io,专注于网络IO.  整个过程没有什么技术含量,浅显分析过就更显得有些枯燥无聊,准备好,硬着头皮吧. 测试服务器配置 运行在VMWare Workstation 9中,64位Centos 6

JS搞基指南----延迟对象入门提高资料整理

原文:JS搞基指南----延迟对象入门提高资料整理 JavaScript的Deferred是比较高大上的东西,  主要的应用还是主ajax的应用,  因为JS和nodeJS这几年的普及,  前端的代码越来越多,  各种回调套回调再套回调实在太让人崩溃, 所以就从后端拖了一个延迟对象这货, 用来解决回调地狱这个问题 .  我们使用ajax的时候多数都是为ajax添加回调 ,然后异步向服务器发送请求, 比如如下原生的XHR代码: <!DOCTYPE html PUBLIC "-//W3C//D

我们用4行代码节省了100万 记录与阿里云PCDN相遇全过程

我们公司主要做视频在线点播,还有少量视频下载.比较关心网络加速,首先就是价格,其次是首播时间.流畅率这几个核心性能指标.目前使用阿里云PCDN也有几个月了,整体结果是超预期.值得安利的.写这篇文章,希望能通过选型对比.接入过程.效果实现几个方面的真实感受,给还在犹豫的同行们一些启发,希望文章内容对你们有所帮助. 废话少说,先直接说效果:每月的CDN费用比以前少了近50%,首播时间.流畅率略优于使用中的2家CDN.这个结果真是让人喜大普奔,原以为PCDN价格比CDN低这么多,性能会不好,没想到这货

iOS-- (转)学习资料整理 推荐必读!!!

iOS 学习资料整理 2015-01-12 11:31 420人阅读 评论(0) 收藏 举报  分类: 其它(50)  目录(?)[+] 这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的目前所处的位置. 该文档会持续更新, 同时也欢迎更多具有丰富经验的 iOS 开发者将自己的常用的一些工具, 学习资料, 学习心得等分享上来, 我将定期筛选合并,

【超齐全】iOS 学习资料整理

好赶货,收藏.原文iOS 学习资料整理 这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的目前所处的位置. 该文档会持续更新, 同时也欢迎更多具有丰富经验的 iOS 开发者将自己的常用的一些工具, 学习资料, 学习心得等分享上来, 我将定期筛选合并, 文档尚有一些不完善之处, 也请不吝指出, 感谢您对 iOS 所做的贡献, 让我们一起把国内的 iO

极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒

链接地址:http://www.cnblogs.com/armyfai/p/4646213.html 要:在这里我们将看到的是C#中利用ODP实现在Oracle数据库中瞬间导入百万级数据,这对快速批量导入的实现有重要意义. .Net程序中可以通过ODP调用特性,对Oracle数据库进行操作,今天来讲一下数据批量插入的功能,所用技术不高不深,相信很多朋友都接触过,小弟班门弄斧了,呵呵.这篇文章是上篇文章的续集,因为上一次试验的征集结果没有突破4秒的方法,所以这次继续挑战与挖掘新方法,虽然是Orac

iOS 开发学习资料整理(持续更新)

"如果说我看得比别人远些,那是因为我站在巨人们的肩膀上." ---牛顿 iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac-study/84557 iOS 学习资料整理 https://segmentfault.com/a/1190000002473595#articleHeader16 iOS.mac开源项目及库 https://github.com/Tim9Liu9/TimLiu-iOS Swift语言 http

要抓住100万软件开发者,华为公有云打算这么做

(上图为华为企业云业务部总裁杨瑞凯) 华为要做公有云?华为怎么做公有云?华为做公有云有戏吗?自从2017年3月10日华为轮值CEO徐直军在长沙华为中国生态伙伴大会2017上宣布华为将组建负责公有云的Cloud BU并在2017年强力投资打造开放的公有云后,就激起了业界强烈的关注和一连串的问题. 华为在2011年成立企业BG全力拓展政企市场,当时也开始积累华为企业云的能力.2015年7月,华为举行了云服务的战略发布会,当时把公有云命名"华为企业云".2017年3月,华为在大连和青岛相继举

Doxygen资料整理

@author          作者@brief             摘要@version         版本号@date             日期@file                文件名,可以默认为空,DoxyGen会自己加@class             类名@param           函数参数@return           函数返回值描述@exception      函数抛异常描述@warning         函数使用中需要注意的地方@remarks