发布时间:2025-12-10 11:32:05 浏览次数:3
该内容有一部分学习至《大型网站性能优化实战》一书
性能优化的前提是发现问题,定位性能瓶颈,确定优化方向。完备的性能监控指标是前提。
服务器性能监控主要分为两个层次:应用层面的监控和系统层面的监控。
应用监控
1.QPS Query per Second,请求数/秒
2.RT(response time) 相应时间。表示从接受请求开始到服务器处理完成的时间差值
补充:RT = CPU TIME(CPU工作时间) + WAIT TIME(包括网络传输耗时、各种阻塞、等待等)
对于大型网站,多数应用都通过RPC从其他服务中获取数据,大多数时间消耗在网络和RPC处理上。减少RT的方法比较简单,主要是合并请求、减少调用;
3.异常监控,主要包括 连接池、数据库连接池异常、超时等应用层面的异常
4.URL监控,包含如下关静指标
调用量
耗时
错误数
相关依赖明细
状态码
并发数
5.关键方法监控
耗时
依赖明细
异常监控
并发数
6.如果是java程序,还需监控JVM
分区监控 Eden, Survivor, Old, Perm Space的大小变化
垃圾回收次数
垃圾回收时间
系统监控
1.CPU监控
CPU利用率、 CPU us利用率(用户空间)、CPU sy利用率(内核空间)、WA(进程在等待磁盘时的CPU消耗)、SI(软中断)、HI(硬中断)
2.网络监控
TCPretr(网络重传率)、网卡IO、TCP连接数
3.内存监控
使用率、swap I/O(和磁盘交换的量,通常在内存不足是发生)
4.磁盘监控
利用率、服务时间(机械硬盘:寻道时间+旋转时间+数据拷贝时间)、I/O等待队列长度、等待时间
系统监控中涉及到的常用命令:
CPU瓶颈:
top
sar
网络瓶颈:
ping 判断网络通断,测试网络性能
telnet 查看特定端口的相应服务是否启动
traceroute 查看路由信息
dig 查看域名解析
sar -n SOCK
netstat
ss
cat /var/log/messsage 查看内核日志,是否丢包
cat /proc/net/snmp 查看和分析240s网络包量、流量、错包、丢包
dmesg 查看系统内核日志
磁盘瓶颈
iostat -x -k -d l 列出磁盘的读写情况, 首先检查机器是否正在大量使用交换空间,同事关注IOwait的CPU占比,如果大,证明磁盘存在较大瓶颈,同时关注AWait(磁盘的响应时间,应小于5ms)
iotop 查看那个进程正在大量读取IO
其他
ulimit -n 查看文件描述符限制
nc 用来快速构建网络连接,可以模拟服务器,也可以模拟客户端
lsof 列出当前打开的文件描述符
mpstat multi-process statistics 监视多处理器上每个处理器的使用情况
ifstat interface statistics 网络流量监测工具
vmstat virtual memory statistics 统计系统的各种资源的使用情况,如进程信息、内存使用、CPU、IO等
tcpdump 抓包工具
strace 跟踪进程执行时的系统调用和所接收的信号