Skip to content

Stress test

chuanhua.chen edited this page Nov 30, 2019 · 1 revision

1)解决最大打开文件数问题:


如果程序提示“Too many open files”错误时,可能是限制最大打开文件数,可以执行以下命令查看当前用户允许最大打开文件数:
ulimit -a

列表中以下项为最大打开文件数:
open files (-n) 1024 #指单个进程最大打开文件数

使用命令: lsof -p 可以查看单个进程所有打开的文件详情
例:lsof -p 3092 | wc -l


增加允许打开的文件数:修改系统配置文件
sudo vim /etc/security/limits.conf

#在最后加入
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

保存后,重新打开终端即可生效。
注:ubuntu下的非root用户的终端最大支持4096(而非root用户在SSH终端可以支持65535),而root用户下可以设置到65535。


2)解决地址重用问题:


如果程序出现“Cannot assign requested address”错误信息,可以看看/etc/sysctl.conf文件是否添加了相关设置。

#修改以下文件:
sudo vim /etc/sysctl.conf

#文件中加入
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.ip_local_port_range=1000 65000


#持久化
sysctl -p

#重新打开终端(如果还出现错误,则重启系统试试)

#统计TCP数:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(a in state) print a, state[a]}'
ss -ant | awk 'NR>=2 {++State[$1]} END {for (key in State) print key,State[key]}'
ss -s



3) 压力测试方法:


说明:由于ubuntu的终端下非root用户只能支持最大4096个文件打开,所以需要在root用户下做压力测试,以下为root用户下做压力测试。
注:通过su命令进入root用户


#创建压力测试目录及配置文件
创建一个目录,在该目录下创建两个配置文件,在文件中添加以下配置参数:
例:在home目录下创建stresstest目录,如:/home/stresstest

配置文件:bigdnseed.conf
allowalladdr=1
trustaddress=127.0.0.1:9901

stressbacktest=1
backtestaddrcount=1500

showrunstatdata=1
showrunstattime=1

showdbstatdata=0
showdbstattime=10


配置文件:dnseedstresstest.conf
localip=127.0.0.1
trustport=9901
beginport=10000
portcount=5000
perportcount=16
connectip=127.0.0.1 #::1
connectport=9906
perconnectcount=1500
maxconnectcount=2000000


注:配置参数说明请参见HELP,例:bigdnseed -help



#运行程序

#运行bigdnseed主程序:
bigdnseed -workdir=/home/stresstest

#运行压力测试程序
bigdnseed_test -workdir=/home/stresstest



#运行统计说明

#bigdnseed程序统计说明:
2019-02-22 16:57:18 [INFO] Session:8459 {In:4195 Out:4264}, Total: {In:1386009-1460 (S:1386008-1460 F:1-0), Out:1378732-1359 (S:1378732-1359 F:0-0)}

Session: 当前TCP会话数
In: 当前TCP接收会话数
Out: 当前TCP回访会话数
Total: 累计统计数
In: 累计接收会话数 - 每秒计数
S: 累计接收会话成功数 - 每秒计数
F: 累计接收会话失败数 - 每秒计数
Out: 累计回访会话数 - 每秒计数
S: 累计回访会话成功数 - 每秒计数
F: 累计回访会话失败数 - 每秒计数


#bigdnseed_test程序统计说明:
2019-02-22 16:57:12 [INFO] ======================================================
2019-02-22 16:57:12 [INFO] Current connect count: 9104
2019-02-22 16:57:12 [INFO] Current in count: 4560
2019-02-22 16:57:12 [INFO] Current out count: 4544
2019-02-22 16:57:12 [INFO] Total out count: 1380122 - 1502
2019-02-22 16:57:12 [INFO] Out success: 1380122 - 1502
2019-02-22 16:57:12 [INFO] Out fail: 0 - 0
2019-02-22 16:57:12 [INFO] Total in count: 1372938 - 1500

Current connect count: 当前TCP连接数
Current in count: 当前接收连接数
Current out count: 当前出连接数
Total out count: 累计出连接数
Out success: 累计出连接成功数
Out fail: 累计出连接失败数
Total in count: 累计接收连接数

Clone this wiki locally