写点什么

第七周作业

用户头像
熊桂平
关注
发布于: 2020 年 11 月 09 日

1.性能测试问题

  • 性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量在资源足够的情况下,随着并发压力的增大而增大,对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某种资源已经呈饱和状态,这时候继续对系统施加压力,系统的处理能力不但不能提高,反而会下降



2.性能测试工具

用你熟悉的编程语言写一个Web性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95%响应时间。用这个测试工具以10并发、100次请求压测www.baidu.com。

2.1代码实现

$url = $argv[1]??'http://www.baidu.com'; //URL
$total = $argv[2]??100; //请求总数
$num = $argv[3]??10; //并发数
$pern = ceil($total/$num); //每并发平均分配请求数
$list = [];
for ($i=0;$i<$num;$i++) {
$pid = pcntl_fork(); //并发采用php多进程pcntl_fork
if ($pid == 0) {
$pid = posix_getpid();
$mh = curl_multi_init();
$k = 0;
$t1 = microtime(true);
$d = [];
for ($j=0;$j<$pern;$j++) {
$t2 = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
$t3 = microtime(true);
$d[] = $t3 - $t2;
}
file_put_contents("/tmp/".$pid.".json", json_encode($d));//测试时间写入临时文件
exit;
} elseif ($pid) {
$list[$pid] = $pid;
}
}
while (pcntl_wait($status) != -1); //等待所有子进程结束后,计算统计数据
$data = [];
$data1 = [];
foreach($list as $pid) {
$d = json_decode(file_get_contents("/tmp/".$pid.".json", true));
unlink("/tmp/".$pid.".json");
$data1[$pid] = $d;
}
for ($i=0;$i<$pern;$i++) {
foreach ($list as $pid) {
if (count($data) < $total) {
$data[] = $data1[$pid][$i];
} else {
break 2;
}
}
}
echo "平均响应时间:".(array_sum($data)/$total)."\n";
sort($data); //所有测试数据从小到大排序
$n95 = intval($total * 0.95);
$time = 0;
for ($i=0;$i<$n95;$i++) {
$time += $data[$i];
}
echo "95%响应时间:".$time."\n";
echo "100%响应时间:".array_sum($data)."\n";

2.2测试结果

[root@testab c]# php w7.php http://www.baidu.com 100 10

平均响应时间:0.035580070018768

95%响应时间:3.1013560295105

100%响应时间:3.5580070018768

[root@testab c]# php w7.php http://www.baidu.com 200 10

平均响应时间:0.033427146673203

95%响应时间:5.9842774868011

100%响应时间:6.6854293346405

[root@testab c]# php w7.php http://www.baidu.com 200 20

平均响应时间:0.042895615100861

95%响应时间:6.8312699794769

100%响应时间:8.5791230201721

[root@testab c]# php w7.php http://www.baidu.com 500 20

平均响应时间:0.044375226974487

95%响应时间:14.856615543365

100%响应时间:22.187613487244

[root@testab c]# php w7.php http://www.baidu.com 1000 20

平均响应时间:0.052338417053223

95%响应时间:29.914191961288

100%响应时间:52.338417053223

[root@testab c]# php w7.php http://www.baidu.com 2000 50

平均响应时间:0.13510796010494

95%响应时间:142.6537604332

100%响应时间:270.21592020988

测试结果



用户头像

熊桂平

关注

还未添加个人签名 2020.09.14 加入

还未添加个人简介

评论

发布
暂无评论
第七周作业