客户端压测工具AB
ab(选项)(参数) 地址
-A:指定连接服务器的基本的认证凭据;
-c:指定一次向服务器发出请求数;
-C:添加cookie;
-g:将测试结果输出为“gnuolot”文件;
-h:显示帮助信息;
-H:为请求追加一个额外的头;
-i:使用“head”请求方式;
-k:激活HTTP中的“keepAlive”特性;
-n:指定测试会话使用的请求数;
-p:指定包含数据的文件;
-q:不显示进度百分比;
-T:使用POST数据时,设置内容类型头;
-v:设置详细模式等级;
-w:以HTML表格方式打印结果;
-x:以表格方式输出时,设置表格的属性;
-X:使用指定的代理服务器发送请求;
-y:以表格方式输出时,设置表格属性。
ab -c 200 -n 200 http://127.0.0.1:3000/
运行结果
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests
Server Software:
Server Hostname: 127.0.0.1 #域名
Server Port: 3000 #请求端口号
Document Path: / #文件路径
Document Length: 11 bytes #页面字节数
Concurrency Level: 200 #请求的并发数
Time taken for tests: 0.192 seconds #总访问时间
Complete requests: 200 #请求成功数量
Failed requests: 0 #请求失败数量
Total transferred: 29400 bytes #请求总数据大小(包括header头信息)
HTML transferred: 2200 bytes #html页面实际总字节数
Requests per second: 1041.68 [#/sec] (mean) #每秒多少请求
Time per request: 191.998 [ms] (mean) #用户平均请求等待时间
Time per request: 0.960 [ms] (mean, across all concurrent requests) # 服务器平均处理时间
Transfer rate: 149.54 [Kbytes/sec] received #每秒获取的数据长度
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 9 94 49.2 95 179
Waiting: 3 90 51.0 91 178
Total: 9 95 49.2 95 179
Percentage of the requests served within a certain time (ms)
50% 95 #50%用户请求在95ms内返回
66% 122 #66%用户请求在122ms内返回
75% 138 #75%用户请求在138ms内返回
80% 146 #80%用户请求在146ms内返回
90% 163 #90%用户请求在163ms内返回
95% 171 #95%用户请求在171ms内返回
98% 176 #98%用户请求在176ms内返回
99% 178 #99%用户请求在178ms内返回
100% 179 (longest request)
这里面重点说2个值Requests per second
(QPS)和Transfer rate
(吞吐量),吞吐量越高,代表服务器的性能越好。
Node 自带 profile
node --prof index.js
服务端监控
客户端服务端也需要开启监控,检测具体问题所在
查看cpu和内存使用率
[root@VM_0_4_centos ~]# top
top - 01:19:19 up 6 days, 9 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 122 total, 1 running, 121 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3880224 total, 235108 free, 973224 used, 2671892 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2615988 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 43692 3692 2288 S 0.0 0.1 0:32.31 systemd
第一行:概况
- 当前时间
01:19:19
;- 从本次开机到现在经过的时间
up 6 days,9 min
;- 当前有几个用户登录到该机器。
1 user
;- 系统1分钟、5分钟、15分钟内的平均负载值
load average: 0.00, 0.01, 0.05
当前系统时间 date
系统已经连续运行时间 last roboot
当前的登陆的用户数who
查看cpu核数grep 'model name' /proc/cpuinfo | wc -l
理解负载值:
- load average 0.5
x 进程一分钟可以处理 2 个任务 ,以30 s 为时间片, 第一个30s 内浪费60%的CPU处理了1个任务,剩余30s 就可以进行休息,因此在运算时CPU利用率60%,1分钟内load average(使用率)为0.5
- load average 1
x 进程一分钟可以处理 2 个任务 ,以30 s 为时间片, 第一个30s 内浪费60%的CPU处理了1个任务,第二个30s内浪费了80%的CPU处理另外一个任务,因此,1分钟内load average(使用率)为1.0,1分钟内CPU平均利用率为60%
- load average 2
x 进程一分钟可以处理 2 个任务 ,现在有4个任务要进行处理,但是 x 进程只能处理2个任务,这时候另外2个任务只能等待爱对,因此此,1分钟内load average(使用率)为2.0
第二行:进程计数(Tasks)
- 进程总数
122 total
;- 正在运行的进程数
1 running
;- 睡眠中的进程数
121 sleeping
;- 停止状态的进程数
0 stopped
;- 僵尸进程数
0 zombie
第三行:CPU使用率(%Cpu(s))
用户模式下所花费cpu时间%Cpu(s): 0.2 us
小于60% 内核进程消耗的CPU时间。0.2 sy
。 us+sy 小于 80%- 用户进程改变过优先级的进程所占CPU时间。
0.0 ni
cpu处于空闲(中断)的状态下的时间。99.7 id
I/O等待所所占CPU时间。0.0 wa
小于30%(根据应用决定)- 处理硬中断的CPU时间占比。
0.0 hi
- 处理软中断的CPU时间占比。
0.0 si
- 处理丢失的CPU时间占比
0.0 st
load average | CPU利用率 | 说明 |
---|---|---|
低 | 低 | cpu良好,系统运行正常 |
低 | 高 | 确认程序是否有问题,少量进程小号cpu资源 |
高 | 低 | 文件io和网络io操作较多,io瓶颈 |
高 | 高 | cpu资源不足 |
第四、五行:物理内存和交换空间(Mem/Swap)
- 内存总量。
3880224 total
- 空闲内存量。
235108 free
- 使用中的内存量。
973224 used
- 缓存和page cache占用的内存量。
2671892 buff/cache
接下来就是进程详细信息
PID
进程IDUSER
进程所有者的用户名。PR
从系统内核角度看的进程调度优先级。NI
进程的nice值,即从用户空间角度看的进程优先级。值越低,优先级越高。VIRT
进程申请使用的虚拟内存量。RES
进程使用的驻留内存(即未被swap out的内存)量。SHR
进程使用的共享内存量。S
进程状态。R=运行,S=睡眠,D=死态 ,T=跟踪/停止,Z=僵尸。%CPU
进程在一个更新周期内占用的CPU时间比例。%MEM
进程占用的物理内存比例。TIME+
进程创建后至今占用的CPU时间长度。COMMAND
运行进程使用的命令。
iostat 查看硬盘带宽命令
[root@VM_0_4_centos ~]# yum install -y sysstat
[root@VM_0_4_centos ~]# iostat
Linux 3.10.0-1062.18.1.el7.x86_64 (VM_0_4_centos) 06/27/2020 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.35 0.00 0.20 0.09 0.00 99.35
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 3.10 3.39 22.73 1758510 11783276
vdb 1.69 5.79 14.56 3001589 7547888
scd0 0.00 0.00 0.00 910 0
%user:CPU处在用户模式下的时间百分比。%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read: 读取的总数据量;
kB_wrtn:写入的总数量数据量;
注意:
如果%iowait的值过高,表示硬盘存在I/O瓶颈如果%idle值高,表示CPU较空闲
如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。
常见命令
# 每隔2秒刷新显示,且显示3次
iostat 2 3
# 显示指定磁盘信息
iostat -d /dev/vdb1
# 显示tty和cpu信息
iostat -t
# 以M为单位显示所有信息
iostat -m
# 查看设备使用率(%util)、响应时间(await)
iostat -d -x -k 1 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。