-
主机:Win7,Inter(R) Core(TM) i5-4210U CPU @ 1.70GHz 2.40 GHz
-
虚拟机:Ubuntu16.04.9 CPU资源:4 核, 内存:4GB
-
Nginx:一种 web 服务器,如果虚拟机没有配置 Nginx ,则需要配置
如果没有正确配置 Nginx 监听端口, 则启动 webbench 会报错:
webbench Connect to server failed. Aborting benchmark.
参考文章 https://www.jianshu.com/p/40594bccff9a 安装和监听 8080 端口。
浏览器访问 http://127.0.0.1:8080 出现下面结果代表配置和监听 8080 端口成功。
-
使用方法:
[root@localhost ~]$ wget http://www.ha97.com/code/webbench-1.5.tar.gz [root@localhost ~]$ tar -xzvf webbench-1.5.tar.gz [root@localhost ~]$ cd webbench-1.5 [root@localhost webbench-1.5]$ make [root@localhost webbench-1.5]$ sudo make install
-t 表示运行测试的时间,如果不指定默认是 30 秒,-c 表示客户端数量,也就是并发数。
[root@localhost webbench-1.5]$ webbench -c 1000 -t 30 http://blog.csdn.net/ Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Request: GET / HTTP/1.0 User-Agent: WebBench 1.5 Host: blog.csdn.net Runing info: 1000 clients, running 30 sec. Speed=3932 pages/min, 30209 bytes/sec. Requests: 1949 susceed, 17 failed.
结果分析
Pages/min:指的输出页数/分 bytes/sec:是指比特/秒 这两个指标能反应网站的访问速度。susceed 和 failed 表示请求的成功数目和失败数目,猜测失败的原因是浏览器没有正确响应客户端的 GET 请求,得不到 200 OK 的响应。 上面的测试使用了相同的参数 (1000的并发数目,30秒),但是不能根据测试结果比较网站的性能。因为还有其它因素,比如测试的当前网页有没有涉及到数据库的访问等等。
-
Linux Top 命令
查看 Linux 系统进程和其它的状况动态的显示。能够实时显示系统中各个进程的资源占用状况。 参数解析: 【第一行】:任务队列信息 top - 14:55:55 (表示系统当前时间) up 7 days 16:00 (表示系统运行时间) 1、users (表示当前登录用户数) load average (系统负载 三个浮点数分别表示:1分钟、5分钟、15分钟的负载情况) 系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU 的数目,结果高于5的时候就表明系统在超负荷运转了。 1、它没有在等待I/O操作的结果 2、它没有主动进入等待状态(也就是没有调用'wait') 3、没有被停止(例如:等待终止) 【第二行】:【进程信息】 表示进程总数; 运行进程数; 睡眠进程数; 停止进程数; 僵尸进程数; 【第三行】:【CPU信息】 us 用户空间占用CPU百分比; sy 内核空间占用CPU百分比; ni 用户进程空间内改变过优先级的进程占用CPU百分比; id 空闲CPU百分比; wa 等待输入输出的CPU时间百分比; hi:硬件CPU中断占用百分比; si:软中断占用百分比; st:虚拟机占用百分比 【第四行】: Mem:total:物理内存总量; used:使用的物理内存总量; free:空闲内存总量; buffers:内核缓存的内存总量; 【第五行】: Swap:total:交换区总量; used:使用的交换区总量; free:空闲的交换区总量; cached:缓冲交换区总量; 【第六行】:再下面就是进程信息: PID:进程的ID ; USER:进程所有者 ; PR:进程的优先级别,越小越优先被执行 ; NInice:值 ; VIRT:进程占用的虚拟内存 ; RES:进程占用的物理内存 ; SHR:进程使用的共享内存 ; S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 ; %CPU:进程占用CPU的使用率 ; %MEM:进程使用的物理内存和总内存的百分比 ; TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值 ; COMMAND:进程启动命令名称;
-
4 个工作线程并以守护进程运行(./webserver -d -t 4 -p 8080)
-
Linux page size is 4096 bytes
-
wenbench设置: 1000 客户端、连接 60s、短连接
-
空闲时线程 CPU占用情况:
测试结果:
QPS: 6083 传输速度: 4.95 MB/S
-
测试结果:
-
测试时线程 CPU 占用:
-
-
QPS: 3785 传输速度: 3.08 MB/S
-
测试结果:
虚拟机配置的是四个核心,从结果可以看出开 8 个线程的反而比开四个线程的 QPS 低了将近一半,猜测应该是线程之间切换开销增大造成的;
另外,后面我很纳闷的是,为什么本地虚拟机的 QPS 和传输速度都很低,后来,我重新查看虚拟机的配置的时候,发现我当初配置的是 1 核==。
下面是配置 4 核 4G 情况的结果:
测试线程池的测试结果:
g++ -o threadpool threadpool.cpp -lpthread ./threadpool
-









