系统运行状态分析工具大体如下:
静态代码检测工具或平台:cppcheck、PC-lint、Coverity、QAC C/C++、Clang-Tidy、Clang Static Analyzer、SonarQube+sonar-cxx(推荐)、Facebook的infer
profiling工具:gnu prof、Oprofile、google gperftools(推荐)、perf、intel VTune、AMD CodeAnalyst
内存泄漏:valgrind、AddressSanitizer(推荐)、mtrace、dmalloc、ccmalloc、memwatch、debug_new
CPU使用率:pidstat(推荐)、vmstat、mpstat、top、sar
上下文切换:pidstat(推荐)、vmstat
网络I/O:dstat、tcpdump(推荐)、sar
磁盘I/O:iostat(推荐)、dstat、sar
系统调用追踪:strace(推荐)
网络吞吐量:iftop、nethogs、sar
网络延迟:ping
文件系统空间:df
内存容量:free、vmstat(推荐)、sar
进程内存分布:pmap
CPU负载:uptime、top
软中断硬中断:/proc/softirqs、/proc/interrupts
确定哪些进程正在使用一组给定的文件:lsof
很多的监控工具 Ubuntu/CentOS 都不自带,需要手动安装,在开始前我们最好先把所有可能用得上的监控工具都装上。(它们都很小,基本不占空间)
大一统的监控工具
下面介绍两个非常方便的大一统监控工具,它们将一台服务器的所有监控数据汇总到一个地方,方便监控。
多机监控推荐用 prometheus+grafana,不过这一套比较吃性能,个人服务器没必要上。
NetData: 极简安装、超详细超漂亮的 Web UI。
这里只介绍单机监控。NetData 也支持中心化的多机监控,待进一步研究。netdata 也可以被用作 prometheus 的 exporter.
NetData 我要吹爆!它是 Github 上最受欢迎的系统监控工具,目前已经 44.5k star 了。
CPU 占用率低(0.1 核),界面超级漂亮超级详细,还对各种指标做了很详细的说明,安装也是一行命令搞定。相当适合萌新运维。
默认通过 19999 端口提供 Web UI 界面。
Linux主要性能指标说明
一台 Linux 服务器的四类指标如下:
CPU:使用率、平均负载(load average)
RAM:used | free | buffer/cache | avaliable
Disk:空闲容量大小、IO 状态
Network:网速、延迟、丢包率等
1)CPU指标
1. CPU 使用率
CPU 使用率即 CPU 运行在非空闲状态的时间占比,它反应了 CPU 的繁忙程度。
2. 平均负载(Load Average)
平均负载(Load Average)是指单位时间内,系统处于 可运行状态(Running / Runnable) 和 不可中断态 的平均进程数,也就是 平均活跃进程数。
我们知道实际上一个 CPU 核只能跑一个进程,操作系统通过分时调度提供了多进程并行的假象。所以当平均负载(平均活跃进程数)不大于 CPU 逻辑核数时,系统可以正常运转。
如果平均负载超过了核数,那就说明有一部分进程正在活跃中,但是它却没有使用到 CPU(同一时间只能有 1 个进程在使用 CPU),这只可能有两个原因:
这部分进程在排队等待 CPU 空闲。
这部分 CPU 在进行 IO 操作。
不论是何种状况,都说明系统的负载过高了,需要考虑降负或者升级硬件。
3. CPU 使用率与平均负载的关系
CPU 使用率是单位时间内 CPU 繁忙程度的统计。而平均负载不仅包括正在使用 CPU 的进程,还包括等待 CPU 或 I/O 的进程(前面讲过平均负载过高的两种情况)。
因此 CPU 使用率是包含在平均负载内的。这两个参数有两种组合需要注意:
两个参数值都很高:需要降低 CPU 使用率!
CPU 使用率很低,可平均负载却超过了CPU逻辑核数:IO 有瓶颈了!需要排查 内存/磁盘/网络 的问题。
最常遇到的场景:内存用尽导致负载飙升。
留言0