博客推荐,linux大牛,netflix高级性能架构师 brendan gregg的博客http://www.brendangregg.com 2.cpu性能监控1 平均负载基础 uptime命令 负载说明(针对单核情况,不是单核时,则乘以核数): load<1:没有等待 load == 1:系统已无额外的资源跑更多的进程了 load > 1:进程都堵着等待资源 注意: load < 0.7时:系统很闲,要考虑多部署一些服务 0.75时:系统已经非常繁忙了 3 平均负载与CPU使用率 平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括正在使用cpu的进程,还包括等待cpu和等待I/O的进程。 CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。比如: a.CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的 b.I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高 c.大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高(线程池 4核同时并发 100个线程) 4.CPU使用率检测命令 系统自带:ps、top 第三方安装:apt install stress sysstat 其中sysstat包括mpstat和pidstat。 a mpstat是一个常用的多核CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所有CPU的平均指标 b pidstat是一个常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等性能指标 压测命令:stress,一个linux系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景 top命令 VIRT:虚拟内存 RES:物理内存 vmstat命令 r(Running or Runnable):就绪队列的长度,也就是正在运行和等待CPU的进程数 b(Blocked):是出于不可中断睡眠状态的进程数 buff:是I/O系统存储的磁盘块文件的元数据的统计信息 cache:是操作系统用来缓存磁盘数据的缓冲区,操作系统会自动调节这个参数,在内存紧张时操作系统会减少cache的占用空间来保证其他进程可用 si和so:si和so较大时,说明系统频繁使用交换区,应该查看操作系统的内存是否够用 in(interrupt):每秒中断的次数 cs:表示线程环境的切换次数,此数据太大时表明线程的同步机制有问题 有时候cpu占用率不是很高,但是系统响应很慢的时候,要考虑是否需要加大内存看si和so指标 3.内存性能监控 buffer和cache的区别 4.文件IO性能监控 4.1I/O的两种方式(缓存I/O和直接I/O) 很多分布式文件存储都是通过零拷贝技术的 iostat命令 sysbench模拟数据读写 5.网络IO性能监控 netstat ss 网络吞吐sar命令 sar -n DEV 1 nc 验证服务器端口有没有开放 mtr连通性测试 mtr命令是linux系统中的网络连通性测试工具,也可以用来检测丢包率 mtr baidu.com 在云服务器选点:声网做音视频通话, 节点选取测试 nslookup 这是一款检测网络中DNS服务器能否正确解析域名的工具命令,并且可以输出。 使用:nslookup baidu.com traceroute 可以提供从用户的主机到互联网另一端的主机的路径,虽然每次数据包由同一出发点到达同一目的地,路径可能会不一样,但通常来说大多数情况下路径是相同的 iptraf强大的网络监控,是一个实时监控网络流量的交互式的彩色文本屏幕界面,它监控的数据比较全面,可以输出tcp连接、网络接口、协议、端口、网络包大小等信息,但是耗费系统资源比较多,且需要管理员权限 tcpdump