1.模拟高并发场景
1.1 安装工具:siege
wget http://download.joedog.org/siege/siege-latest.tar.gz
tar -zxvf siege-latest.tar.gz
cd siege-4.0.8
./configure
make
make install
1.2 模拟高并发场景
- 创建一个包含url请求的文件
这里的url例子是作者自己创建的本地服务,读者根据实际情况自行修改。
http://localhost:8001/hi?name=text
http://localhost:8001/testValue
- 使用siege发起请求
siege -c 10 -r 100 -f url.txt
# -c 并发量
# -r 重复次数
# -f 存放请求url的文件
# 执行效果如下:
{ "transactions": 2000, # 已完成的事务总数
"availability": 100.00, # 请求成功率
"elapsed_time": 0.83, # 总消耗时间
"data_transferred": 0.03, # 响应数据的总大小
"response_time": 0.01, # 响应时间
"transaction_rate": 2409.64, # 平均每秒完成的事务数量
"throughput": 0.03, # 平均每秒传送的数据量
"concurrency": 19.69, # 实际最高并发链接数
"successful_transactions": 2000, # 成功的事务总数
"failed_transactions": 0, # 失败的事务总数
"longest_transaction": 0.06, # 最长的事务处理时间
"shortest_transaction": 0.00 # 最短的事务处理时间
}
使用-f的方式,可以请求多个接口,如果只有一个接口,也可以直接url,如下:
siege -c 10 -r 100 http://localhost:8001/hi?name=text
1.3 提高并发量至“部分请求失败”的程度
# 将并发量设置为200
siege -c 200 -r 100 -f url.txt
# 请求结果如下:
[error] socket: read error Connection reset by peer sock.c:635: Connection reset by peer
[error] unable to write to socket sock.c:733: Broken pipe
[error] unable to write to socket sock.c:733: Broken pipe
[error] unable to write to socket sock.c:733: Broken pipe
... ...
[error] socket: read error Connection reset by peer sock.c:635: Connection reset by peer
[error] unable to write to socket sock.c:733: Broken pipe
{ "transactions": 9278,
"availability": 89.89,
"elapsed_time": 9.18,
"data_transferred": 0.13,
"response_time": 0.14,
"transaction_rate": 1010.68,
"throughput": 0.01,
"concurrency": 143.67,
"successful_transactions": 9278,
"failed_transactions": 1044,
"longest_transaction": 0.73,
"shortest_transaction": 0.00
}
由上面的数据可以看出,当并发量为200的时候,当前服务就已经无法承载,导致部分请求失败.